在集群上运行的 Redis 存储库
你可以在集群 Redis 环境中使用 Redis 仓库支持。有关 ConnectionFactory
的配置详情,请参阅“Redis 集群”部分。然而,由于默认的键分布会将实体和二级索引分散到整个集群及其槽中,因此还需要进行一些额外的配置。
下表展示了集群中数据的详细信息(基于前面的示例):
键 | 类型 | 槽位 | 节点 |
---|---|---|---|
people:e2c7dcee-b8cd-4424-883e-736ce564363e | 哈希 ID | 15171 | 127.0.0.1:7381 |
people:a9d4b3a0-50d3-4538-a2fc-f7fc2581ee56 | 哈希 ID | 7373 | 127.0.0.1:7380 |
people:firstname:rand | 索引 | 1700 | 127.0.0.1:7379 |
某些命令(如 SINTER
和 SUNION
)只有在所有涉及的键映射到同一个槽时才能在服务器端处理。否则,计算必须在客户端完成。因此,将键空间固定到一个槽上非常有用,这样可以立即利用 Redis 的服务器端计算能力。下表展示了这样做时的效果(注意槽列和节点列中端口值的变化):
键 | 类型 | 槽位 | 节点 |
---|---|---|---|
{people}:e2c7dcee-b8cd-4424-883e-736ce564363e | 哈希 ID | 2399 | 127.0.0.1:7379 |
{people}:a9d4b3a0-50d3-4538-a2fc-f7fc2581ee56 | 哈希 ID | 2399 | 127.0.0.1:7379 |
{people}:firstname:rand | 索引 | 2399 | 127.0.0.1:7379 |
提示
在使用 Redis 集群时,通过使用 @RedisHash("{yourkeyspace}")
来定义并固定 keyspaces 到特定的 slot。