redis高可用

redis主从复制

主从复制架构仅仅用来解决数据的冗余备份,从节点仅仅用来同步数据,不能在主节点宕机时,顶上来提供服务,所以不常用

配置方式

1、修改端口
2、修改# bind 127.0.0.1为 bind 0.0.0.0
3、在从节点中加入:replicaof 192.168.50.110 7000

哨兵机制

Sentinel(哨兵)是Redis的高可用解决方案:

由一个或多个sentinel实例组成的sentinel系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器。

简单来说哨兵就是带有自动故障转移功能的主从架构。

但是哨兵机制无法解决单节点并发压力问题以及单节点内存和磁盘物理上限问题

配置方式

1.在主节点上创建哨兵配置

-在Master对应redis.conf同目录下新建sentinel.conf文件,名字绝对不能错;

2.配置哨兵,在sentinel.conf文件中填入内容:

sentinel monitor 被监控数据库名字(自己起名) ip port 哨兵数量
bind:0.0.0.0 #开启远程访问模式

3.启动哨兵模式进行测试

-redis-sentinel sentinel.conf

使用哨兵机制后Spring-Boot如何处理

使用哨兵后,master可能会换,如果之前的slave节点就可以进行set操作了,配置改为如下:

#哨兵名称
spring.redis.sentinel.master=mymaster
#哨兵节点,多个用逗号分隔
spring.redis.sentinel.nodes=127.0.0.1:26379,127.0.0.1:26380

集群

Redis在3.0后开始支持Cluster(集群)模式,目前redis的集群支持节点的自动发现,支持slave-master选举和容错,支持在线分片(sharding shard)等特性

所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽

节点的fail是通过集群中超过半数的节点检测失效时才生效

客户端与redis节点直连,不需要中间proxy层,客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可

redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster负责维护node<->slot<->value

集群搭建

判断一个集群中的节点是否可用,是集群中的所有主节点选举过程,如果半数以上的节点认为当前节点挂掉,那么当前节点就是挂掉,所以搭建redis集群时建议节点数最好为基数,至少需要三个主节点,三个从节点,所以一个集群最少需要6个节点。

1.准备环境安装ruby以及redis集群依赖

yum install -y ruby rubygems
gem install redis

redis 实现分布式session

以下是membercache方式实现原理

用redis方式实现的原理

redis的session管理利用spring提供的session管理解决方案,将一个应用session交给Redis存储,整个应用中所有session的请求都会去redis中获取对应的session数据

原文地址:https://www.cnblogs.com/ginb/p/14481716.html