Redis Cluster 原理探讨
Redis Cluster

hash(key) % 16384 = slot 哈希槽 = hash(key) & 2^n^
slot - hash槽分布范围[0-5460] 、 [5461-10922]、[10923-16383]
1 | 创建RedisCluster配置的节点目录 |
| 序号 | 配置项 | 选项 | 释义 |
|---|---|---|---|
| 1 | cluster-enabled | yes | 启动集群模式 |
| 2 | port | 8001 | 端口 |
| 3 | dir | /usr/local/redis-cluster/8001/ | 指定数据目录,绝对目录 |
| 4 | cluster-config-file | nodes-8001.conf | 集群节点信息,hash crc16 |
| 5 | cluster-node-timeout | 5000 | 集群节点超时时间,心跳时间 |
| 6 | bind | #127.0.0.1 | 测试需要注释掉,生产需指定配置 |
| 7 | protected-mode | no | 关闭保护模式 |
| 8 | requirepass | 111111 | redis访问密码 |
| 9 | masterauth | 111111 | 集群节点间的访问密码,与上述保持一致 |
| 10 | damonize | yes | 后台启动 |
| 11 | appendonly | yes |
Laravel 框架 使用redis cluster需要修改的地方
1 | # .composer.lock |
Redis Cluster 注意事项
- 不完全支持批量操作:mset、mget
- 事务不能跨节点支持
- 不支持多实例
- key 是最小粒度
- 最少 6 个才能保证组成完整高可用的集群
- 连接的时候只需要连接 1 台服务器即可。
- 如果 1 个主从连接宕机的话,那么集群就宕机了。
应用场景
计数器 string incr
分布式ID生成 incr
海量数据统计 - bitmap
会话缓存 key value
分布式队列/阻塞队列 list 双向链表 lpush/rpush rpop/lpop brpop/blpop阻塞队列
分布式锁[setnx]
热键 HotKey 存储 [list] ltrim 用户路由 二级缓存
社交类 - 好友推荐、文章 set
排行榜 sorted_set
延迟队列 - sorted_set & zadd + zrangbyscore + rem key
地址服务 [geo]
布隆过滤器 [0-1]
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Michael's Blog!
评论




