首页 > 代码库 > redis集群
redis集群
使用redis集群可以干什么?
1.可以将数据分布式地存储在多个redis节点。
2.部分节点不可用时,仍然可以保证节点的可用性。
redis集群中节点对tcp端口的要求:
1.client与节点之间通信的接口,称为p1
2.节点之间通信的接口,称为p2。p2=p1+10000
redis集群与docker的兼容性:
redis集群不支持端口remapped,为了使docker与redis兼容,需要将docker在host networking mode下工作(--net=host)。
redis集群的分表
redis集群的分表没有使用一致性hash,而是将数据分布在16384个slot中,平均分布在集群中的多个节点。
好处:
1.增加节点和删除节点只需要将slot在节点间移动即可,移动slot时,无需down机。
redis支持同一个命令的执行中,对属于同一个slot的多个key进行操作,从而保证事务性。
使用hash tag可以保证多个key同属于一个slot
hash tag案例,大括号内的内容相同,两个key在同一个slot中:
1. keyA{foo}
2. keyB{foo}
redis集群的的主从模式
我们可以为redis的每个node设置slave,某个节点的master挂了,slave可用,则集群仍然可用。若某个节点的主从全部挂掉,那么系统不可用。
redis无法保证数据的强一致性,一些情况下,写入的数据可能会丢失。
redis client的写请求是异步返回的,写入master的数据,在复制到slave前,挂掉,那么数据会丢失。
redis集群