Valkey/Redis:集合和有序集合

Valkey/Redis:集合和有序集合

💡 原文英文,约1000词,阅读约需4分钟。
📝

内容提要

本文介绍了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)操作。

🏷️

标签

➡️

继续阅读