Predis 声称拥有客户端分片(支持键的一致性散列)。 http://github.com/nrk/predis
我可以使用连接到一组配置文件(节点)来进行分片,但它不是一致的哈希。当我将另一个节点添加到池中时,找不到某些 key 。任何人都有这方面的经验吗?
使用 php 5.2(和 redis 的 php 5.2 版本)。
最佳答案
Redis 官方网站说“Redis 通过一致性哈希支持客户端分片。目前不支持容错,也不支持在运行时添加或删除集群。”
据我目前的了解,这种共享是不可容错的,存储在故障节点上的所有 key 都将丢失。同样,如果您添加一个新节点,部分 key 空间现在将丢失(因为 key 将存储在错误的节点上)。通常在一致的哈希系统中,当一个新节点加入时,它会复制所有现在从其邻居映射到它的键。 Redis 服务器不支持执行此操作。
因此,如果您将 Redis 用作缓存,那么一致性哈希工作正常,实际数据存储在 Redis 后面,但目前不要指望您的数据不会丢失。
更新:可以通过名为 ketama 的一致性哈希库实现真正的分片。 .
关于redis - Predis 分片(一致性哈希),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2139620/