1.redis集群
解决单点问题
主从复制(master-slave)
配置非常简单,redis.conf配置: slaveof ip port

存在两个问题:数据同步和选主
数据同步:
全量复制,快照

增量复制
优化全量的过程,生成快照还有数据需要复制
无磁盘复制
配置:repl-diskless-sync no
传输rpc数据同步
2.哨兵机制
作用
1.监控master和slave是否正常运行
2.当master出现故障的时候,从slave中选举一个新的master

raft完成哨兵的选举机制,哨兵也是集群
3.Redis-Cluster

gossip的无中心化节点集群
redis cluster bus
解决了数据分片存储:虚拟槽slot(0-16383)

如果相关数据放到一个机器上怎么办?
比如mset key1 key2 key3如果路由不到不同节点,操作不是原子性,可能key1成功,但是key2失败,可以通过hashTag实现,user{user1}111,只有user1会被计算
分片迁移,slot分配
数据迁移和slot迁移

网友评论