Redis

目录

关系型数据库和非关系型数据库的区别

关系型数据库

非关系型数据库

区别

数据存储方式不同

扩展方式不同

对事务性的支持不同

Redis

Redis的特点

Redis 为什么处理速度这么快?

安装部署

Redis操作命令

常用命令

命令工具


除了MySQL Oracle 等关系型数据库,还有一大非关系型数据库 Redis

关系型数据库和非关系型数据库的区别

在介绍Redis 之前,首先要知道什么是关系型数据库和非关系型数据库,以及分清关系型数据库和非关系型数据库之间的区别

关系型数据库

关系型数据库是一种基于关系模型的数据库,是一个结构化的数据库,一般面向记录,使用SQL语句对数据进行检索和操作,在使用时必须先建库建表,然后按照表结构去进行存储,如果数据与表结构不匹配就会存储失败

主流的关系型数据库有刚才提到的MySQL、Oracle 还有 SQL Server、DB2、PostgreSQL等

非关系型数据库

非关系型数据库(NoSQL,Not Only SQL)是一类不使用传统关系模型和SQL语言的数据库管理系统。它们通常用于处理大量非结构化或半结构化数据,不需要预先建库建表定义数据的存储结构,每条记录都可以由不同的数据类型和字段个数

主流的非关系型数据库有 Redis、MongBD、Hbase 等

区别
数据存储方式不同

关系型数据库将数据存储在表中,每个表由行和列组成。表与表之间可以通过主键和外键建立关系。数据结构是预定义的,表的结构(列的名称和数据类型)在创建时确定。通过使用约束(如唯一性约束、外键约束等)来保证数据的一致性和完整性。

而非关系型数据库的数据存储方式更加灵活,常见的存储方式包括键值对、文档、列族和图结构。且数据结构不需要定义,可以根据需求动态变化。通常采用最终一致性模型,而不是强一致性模型。

扩展方式不同

关系型数据库通常采用纵向扩展(垂直扩展),即通过提高单个服务器的处理能力(如增加内存、CPU等)来提高性能。它的纵向扩展有一定的上限,当数据量和并发量达到一定规模时,单个服务器的性能可能无法满足需求。

非关系型数据库通常采用横向扩展(水平扩展),即通过增加更多的服务器(节点)来分担负载,实现分布式存储和处理。而横向扩展就可以无限扩展,能够处理大规模数据和高并发访问。

对事务性的支持不同

关系型数据库支持ACID事务(原子性、一致性、隔离性、持久性),能够保证事务的完整性和一致性。支持细粒度的事务控制和回滚操作,确保数据操作的可靠性和稳定性。

而非关系型数据库通常支持BASE模型(基本可用性、软状态、最终一致性),事务支持相对较弱。在事务的稳定性和一致性方面,非关系型数据库通常不如关系型数据库。所以非关系型数据库适用于大数据量和高并发的场景。

了解了关系型数据库和非关系型数据库的区别之后再介绍主角 Redis

Redis

Redis简介

Redis是一个开源的使用C语言编写的、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。

Redis的特点

性能极高:

Redis 具有极高的数据读写速度:数据读取的速度最高可达到 110000 次/s,数据写入速度最高可达到 81000 次/s,这使得Redis成为处理高并发请求的理想选择,尤其是在需要快速响应的场景中,如缓存、会话管理、排行榜等。

丰富的数据类型:

Redis 提供了丰富的数据类型,包括字符串(String)、列表(Lists)、集合(Sets)、哈希表(Hashes)、有序集合(Sorted Sets)等。这些数据类型为开发者提供了灵活的数据操作能力,使得Redis可以适应各种不同的应用场景。

原子性操作:

Redis 的所有操作都是原子性的,这意味着操作要么完全执行,要么完全不执行。这种特性对于确保数据的一致性和完整性至关重要,尤其是在高并发环境下处理事务时。

持久化:

Redis 支持数据的持久化,可以将内存中的数据保存到磁盘中,以便在系统重启后恢复数据。这为 Redis 提供了数据安全性,确保数据不会因为系统故障而丢失。

支持发布/订阅模式:

Redis 内置了发布/订阅模式(Pub/Sub),允许客户端之间通过消息传递进行通信。这使得 Redis 可以作为消息队列和实时数据传输的平台。

单线程模型:

尽管 Redis 是单线程的,但它通过高效的事件驱动模型来处理并发请求,确保了高性能和低延迟。单线程模型也简化了并发控制的复杂性。

主从复制:

Redis 支持主从复制,可以通过从节点来备份数据或分担读请求,提高数据的可用性和系统的伸缩性。

应用场景广泛:

Redis 被广泛应用于各种场景,包括但不限于缓存系统、会话存储、排行榜、实时分析、地理空间数据索引等。

社区支持:

Redis 拥有一个活跃的开发者社区,提供了大量的文档、教程和第三方库,这为开发者提供了强大的支持和丰富的资源。

跨平台兼容性:

Redis 可以在多种操作系统上运行,包括 Linux、macOS 和 Windows,这使得它能够在不同的技术栈中灵活部署。

Redis 为什么处理速度这么快?

1.因为Redis是一款纯内存结构,避免了磁盘I/o等耗时操作。

2.Redis命令处理的核心模块为单线程,减少了锁竞争,以及频繁创建线程和销毁线程的代价,减少了线程上下文切换的消耗。

3.Redis采用了 I/O 多路复用机制,大大提升了并发效率。

安装部署

官方下载地址:http://download.redis.io/releases/

关闭防火墙和增强功能

下载所需依赖包和工具

yum install -y gcc gcc-c++ make 

将压缩包放在常用的目录内,比如/opt

tar zxvf redis-5.0.7.tar.gz -C /opt/

由于Redis 源码包种直接提供了makefile 文件,所以解压完成后不需要./config ,直接进行make安装

cd /redis-5.0.7/

make

make PREFIX=/usr/local/redis install

cd utils

执行软件包提供的install_server.sh 脚本文件,对 Redis 默认设置进行配置

./install_server.sh

一直回车,直到设置路径

将路径改为 /usr/local/redis/bin/redis-server

各行配置内容如下

Port : 6379                                                               #默认侦听端口为6379

Config file : /etc/redis/6379.conf                              #配置文件路径

Log file : /var/log/redis_6379.log                             #日志文件路径

Data dir : /var/lib/redis/6379                                    #数据文件路径

Executable : /usr/local/redis/bin/redis-server          #可执行文件路径

Cli Executable : /usr/local/bin/redis-cli                    #客户端命令工具

把redis的可执行程序文件放入路径环境变量的目录中便于系统识别

ln -s /usr/local/redis/bin/* /usr/local/bin/

install_server.sh 脚本执行后,redis 默已经启动,监听端口为6379,查看端口号6379

netstat -antulp | grep 6379  

修改 /etc/redis/6379.conf 配置文件

vim /etc/redis/6379.conf 

大约在低70行

bind 127.0.0.1 172.16.233.101

后面加上 本地的ip地址,不然无法连接redis

重启redis

/etc/init.d/redis_6379 restart                  #同样的 start就是启动,stop停止,status查看状态

Redis操作命令

常用命令

连接Redis

redis-cli -h 172.16.233.101 -p 6379

前面的root@主机名变成ip地址就说明已经进入Redis

存放数据:set        

读取数据:get

创建一个 test 键,存放一个名为demo的数据,如下

redis 命令中也有通配符,*代表所有,?代表一个任意字符,所以 t* 就代表以t开头的所有键,t? 就是以t开头的两个字符长度的键

我们多创几个键

keys *               很容易理解,就是查看当前所有键

我们加一个t

keys t*

只查找出了t开头的键

exists 命令可以判断键值是否存在

exists test

返回结果为1,说明存在test 键

exists test05 

返回结果为0,则说明不存在test键

del 命令删除当前数据库的指定key 

例如  del test

rename 可以对已有的key 进行重命名

rename test newtest

即可将 test 键改为newtest

renamenx 可以对已有 key 进行重命名,并检测新名是否存在,如果目标 key 存在则不进行重命名。(不覆盖)

dbsize 可以查看当前数据库中 key 的数目。

config set requirepass 【密码】可以更改密码,一旦设置密码,必须先验证通过密码,否则所有操作不可用

Redis 支持多数据库,Redis 默认情况下包含 16 个数据库,数据库名称是用数字 0-15 来依次命名的。 多数据库相互独立,互不干扰。

数据库之间的切换就用 select

默认是在0 中

我们切换至 1

keys * 查看当前库中

1 中是没有任何数据的

我们再切回 0

再次查看就有数据了

move 可以将键移到其他库中

move test 1         将test键移到 1 库中

flushdb:清空当前数据库数据

flushall:清空所有数据库的数据,这两个操作均不可逆,慎用

命令工具

redis-server:用于启动 Redis 的工具

redis-benchmark:用于检测 Redis 在本机的运行效率

redis-check-aof:修复 AOF 持久化文件

redis-check-rdb:修复 RDB 持久化文件

redis-cli:Redis 命令行工具

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值