Redis 集合是无序的唯一字符串集合。其价值主要体现在两个方面:成员资格测试是即时完成的,并且 Redis 可以在数据库内部计算集合之间的交集、并集和差集。这使得诸如“该用户是否关注了那个用户”、“这两篇文章共享哪些标签”以及“今天有多少独立访客”等问题,可以通过单个快速命令来解决,而无需在应用程序代码中使用循环。
这是《Redis 大师课》系列的第六部分,继列表和队列之后。
基础:唯一成员资格
集合存储唯一的值,并能快速告知你某个元素是否存在于其中:
SADD article:1:tags "redis" "database" "caching"
SADD article:1:tags "redis" # ignored, already present
SISMEMBER article:1:tags "redis" # 1 (yes), O(1)
SCARD article:1:tags # 3 (count of members)
SMEMBERS article:1:tags # all members
SREM article:1:tags "caching" # remove a member
唯一性是自动保证的:添加已存在的值不会执行任何操作(空操作)。此外,SISMEMBER 的时间复杂度为常数级,因此当你需要快速查询“X 是否在此组中”时,集合是合适的数据结构:例如用户的权限、被阻止的标识符、已见过的互联网协议地址或项目的标签。将这些数据存储为集合可以提供即时的成员资格检查,这是列表或数据库查询无法比拟的。
数据库中的集合代数
集合区别于其他数据结构的特点在于能够计算它们之间的关系。Redis 以原子方式执行以下三种操作:
SINTER user:1:follows user:2:follows # accounts both follow
免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。
上一篇 :
Redis 列表与简单队列
分享到:
长按或扫码识别 分享给好友