Redis是内存性的数据库。
Redis是一个高性能key/value内存型数据库
Redis支持丰富的数据类型
Redis支持持久化
Redis单线程,单进程
yum install gcc-c++
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
# 解压文件
tar -zxvf redis-5.0.0.tar.gz
cd redis-5.0.0.tar.gz
# 进行编译并指定安装的位置
./configure prefix=/usr/redis
# 安装
make && make install
注意:Redis的配置文件需要从源码目录中拷贝。cp redis-5.0.0.tar.gz/redis.conf /usr/redis
所有指令都需要在/usr/redis/bin目录下面。
① 启动Redis服务
./redis-server ../redis.conf
② 启动客户端连接Redis
# 默认端口是6379
./redis-cli -p 6379
主从复制架构只能用来解决数据的冗余备份,只有master节点可以接受客户端的请求并执行写入操作,而slave节点仅仅做数据的同步,客户端无法将数据写入到从节点中。因为主从复制架构无法保证主节点宕机时的自动故障转移即高可用。
在从节点的配置文件中增加下面的配置,表示自己是同步的是指定主节点的数据。
此处展示的是Redis5.0.5版本的配置,使用的是replicaof
,而Redis4.0.10使用的配置是slaveof
。
需要先关闭主节点的防火墙,使用service firewalld stop
,不然从节点开启Redis服务的时候会报错。
哨兵架构是基于之前的主从复制架构的,sentinel机制是Redis的高可用解决方案:由一个或多个哨兵(sentinel)组成的sentinel系统可以监视任意多个主从架构,当被监视的主服务器宕机的时候,自动将该主服务下的某个从服务器升级为新的主服务器,即使之前的服务器恢复运行也只能当现在主服务器的从服务器了。哨兵架构可以简单地理解为带有自动故障转移功能的主从复制架构。但是这个架构无法解决单节点并发压力以及单节点内存和磁盘物理上限的问题。
在/usr/redis
目录下整一个配置文件,命名为sentinel.conf,并在配置文件中写入下面配置,表示哨兵监视的是命名为myredis的主从架构,主节点IP是192.168.255.200,端口是6379,启用的哨兵数量是1个。因为在哨兵架构下面,SpringBoot直接连接的是哨兵节点,所以哨兵节点还需要开启远程连接权限,更改bind为0.0.0.0。
使用./redis-sentinel ../sentinel.conf
开启哨兵机制,开启sentinel之前必须保证主从架构是已经开启,并且从节点记得关闭防火墙!
接下来吧200的主节点干掉,可以看到哨兵架构进行了重新投片选举主节点,并且201成为了主节点,原先的200变成了从节点。
整个集群里面有很多的主节点,主节点下面可能有多个从节点,16384个哈希槽由集群中的所有主节点共同瓜分,且每个主节点至少有一个哈希槽(因为值是由哈希槽维护的),只有所有哈希槽都被分配了,整个集群才能正常工作。
当客户端进行连接的时候,并且要set值得时候,会对这个key进行CRC16计算,计算结果肯定在0-16383之间即哈希槽索引范围内,Cluster集群根据这个索引找到哈希槽所在得主节点,并把值放入其中。
CRC16算法特点:
所有Redis的主节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽。
Redis4.0.10版本搭建:
先从源码中拷贝处redis-trib.rb
,接着执行下面的指令。
# --replicas x 表示一个主节点需要有x个从节点进行数据的备份
./redis-trib.rb create --replicas 1 192.168.255.200:6379 192.168.255.201:6379 192.168.255.202:6379 192.168.255.203:6379 192.168.255.204:6379 192.168.255.205:6379
Redis5.0.5版本搭建:
./redis-cli --cluster create 192.168.255.200:6379 192.168.255.201:6379 192.168.255.202:6379 192.168.255.203:6379 192.168.255.204:6379 192.168.255.205:6379 --cluster-replicas 1
结果报错说哈希槽没有分配完,对某个主节点执行./redis-cli --cluster fix 192.168.255.200:6379
即可。
可用./reis-cli --cluster check 192.168.255.201:6379
查看集群的状态,当结果如下图所示时,集群搭建成功。
添加主节点./redis-cli --cluster add-node 新节点 集群中的某个节点
如上图所示,Redis的集群搭建成功!