redis-codis

redis-codis ( redis集群方案之一 )

为什么需要分布式部署

单机内存太大则rdb文件就大,主从同步全量的时候耗时太长.
单机内存太大则都使用一个机器的CPU,海量数据的处理肯定不够用
分布式可以利用多个cpu的优势.而且可以存储海量的数据.

工作原理

相当于一层代理

image.png

优点

Codis 在设计上相比 Redis Cluster 官方集群方案要简单很多,因为它将分布式的问题交给了第三方 zk/etcd 去负责,
自己就省去了复杂的分布式一致性代码的编写维护工作。而 Redis Cluster 的内部实现非常复杂,它为了实现去中心化,
混合使用了复杂的 Raft 和 Gossip 协议,还有大量的需要调优的配置参数,当集群出现故障时,维护人员往往不知道从何处着手。

注意事项

  • mget其实是个将key分组,分别mget,最终结果汇总.
  • 不支持事物了.
  • 不支持rename了.
  • 分为1024个槽codis
  • 单个redis keyvalue的内存不宜过大
  • 支持扩容,单个 key 对应的 value 不宜过大,因为集群的迁移的最小单位是 key,对于一个 hash 结构,
    它会一次性使用 hgetall 拉取所有的内容,然后使用 hmset 放置到另一个节点。如果 hash 内部的 kv 太多,
    可能会带来迁移卡顿。官方建议单个集合结构的总字节容量不要超过 1M。如果我们要放置社交关系数据,
    例如粉丝列表这种,就需要注意了,可以考虑分桶存储,在业务上作折中

野史

  1. codis是豆瓣团队搞得,领头人是刘奇,后来开源出来那个TIDB的人
  2. go语言开发的

你可能感兴趣的:(redis-codis)