2015-04-01 129 views
5

在客户端分片方法中,我可以创建分片并将zset存储在该单个分片中。使用Redis集群,zset可以有多大?如果要成为redis中所有密钥的索引,如何缩放zsets。Redis集群和zsets

+0

你能解释你的分片键是什么吗?你也想把你的zset分割成分片或分片分割的分片。因为根据这里的文档,___分区粒度是关键,所以不可能像一个非常大的有序集合一样使用一个巨大的关键字对数据集进行分片___。在这里查看redis文档:http://redis.io/主题/分区 – skippy 2015-04-10 01:59:11

回答

5

简短回答:是 - 您可以将所有密钥名称存储在单个分类集中。

Redis Sorted Set最多可以有2^32 - 1(4294967295)个成员,每个成员都由长达512MB的字符串和64位的分数组成(对于数据库中键的数量也是一样的限制)。这适用于独立的Redis以及Redis群集,并允许将〜2048PB存储在单个排序集中:)

在Redis集群中,每个密钥都属于特定的散列槽。因此,无论上面的理论大小限制如何,分类集只能和最大的分片(即Redis服务器)一样大。虽然分片可以管理一个插槽,并且一个插槽可以容纳一个密钥 - 但由于可扩展性问题,我几乎不推荐这种方法。

索引您的所有密钥是一项有趣的挑战 - 为什么要这样做?更重要的是,您希望针对该索引运行哪些类型的查询?根据数据库中键的数量和查询需求,可能有其他更有效的方法来实现这一点。

+0

如果我的命令是“zadd to_be_expired 142791950 user1”,那么这里的密钥是to_be_expired,成员是user1。如果我将其他成员添加到zset中,它们将存储在同一个redis实例中?那么如果我使用zset,一个redis实例将为所有流量提供服务? – Phoenix 2015-04-11 19:49:39

+0

Exactomundo(yes) – 2015-04-11 20:06:22

+0

但是,如果单个服务器遇到频繁检测信号的所有请求,这些请求将不可扩展。 – Phoenix 2015-04-13 01:34:05