在客户端分片方法中,我可以创建一个分片,并在该单个分片中存储一个有序集。使用Redis集群,一个有序集最大能多大?如果它将是我在Redis中所有键的索引,我该如何扩展这些有序集?
简短回答:是的——你可以将所有键名存储在单个有序集合中。
Redis有序集合最多可以拥有2^32-1(4294967295)个成员,每个成员由一个长达512MB的字符串和一个64位分数构成(同样的限制适用于数据库中的键数)。这适用于独立的Redis和Redis集群,并允许在单个有序集合中存储约2048PB的数据 :)
在Redis集群中,每个键都属于特定的哈希槽。因此,无论理论大小限制如何,有序集合的大小只能与你的最大分片(即Redis服务器)一样大。虽然一个分片可以管理一个哈希槽,而一个哈希槽只能容纳一个键——但出于可扩展性考虑,我不建议采用这种方式。
对所有键进行索引是一个有趣的挑战——你为什么要这样做?更重要的是,你想对该索引运行什么类型的查询?根据数据库中键的数量和查询要求,可能会有其他更有效的方法来实现。