内容提要
本文介绍了Valkey/Redis中的集合和有序集合的概念,集合是一种存储无序唯一值的数据类型,有序集合则是每个成员都有分数用于排序。可以使用SADD命令创建和添加元素,使用ZADD命令创建有序集合并使用ZRANGE和ZREVRANGE命令获取元素。
延伸解读
集合的唯一性与键命名实践
集合存储唯一值,重复添加会被忽略,如示例中再次添加“Pizza”只返回1。Valkey/Redis没有命名空间概念,键名中的冒号分隔符(如user:42:favfoods)只是命名习惯,并非强制结构。开发者应保持键名风格一致,避免混淆。
集合运算的实际应用
通过SINTER可找出多个集合的交集,例如共同喜欢的食物;SDIFF则返回第一个集合与后续集合的差集,如用户91喜欢但用户87不喜欢的食物。这些操作适合实现好友共同点、推荐差异等场景,但需注意SDIFF的顺序敏感性。
有序集合的分数与排序规则
有序集合的每个成员关联一个分数,分数可为整数或浮点数,用于排序。默认按分数升序排列,相同分数则按字典序排序。示例中城市按人口升序,因此人口最少的Mar del Plata排在最前。使用ZREVRANGE可降序获取,WITHSCORES选项同时返回分数。
索引范围与返回结果
ZRANGE和ZREVRANGE使用0-based索引,且范围包含两端。例如ZREVRANGE city_pop 0 2 WITHSCORES返回索引0到2的三个元素,即人口最多的三个城市。理解索引规则有助于准确控制返回结果的数量和顺序。
Q&A
Valkey/Redis中的集合是什么?
集合是一种存储无序唯一值的数据类型,元素是唯一的,重复的元素不会被添加。
如何在Valkey/Redis中创建集合?
可以使用SADD命令创建和添加元素到集合中。
Valkey/Redis中的有序集合有什么特点?
有序集合包含唯一成员,并通过分数进行排序,分数可以是整数或浮点数。
如何查看集合中的所有成员?
可以使用SMEMBERS命令查看集合的所有成员。
Valkey/Redis中如何获取有序集合的降序结果?
可以使用ZREVRANGE命令获取有序集合的降序结果。
集合之间可以进行哪些操作?
集合之间可以进行交集(SINTER)和差集(SDIFF)操作。