redis 集合命令
来源:互联网 发布:小米4电信3g 网络 编辑:程序博客网 时间:2024/05/20 02:53
转自:redisbook
REDIS_SET
(集合)是 SADD 、 SRANDMEMBER 等命令的操作对象, 它使用 REDIS_ENCODING_INTSET
和 REDIS_ENCODING_HT
两种方式编码:
当使用 REDIS_ENCODING_HT
编码时, 集合将元素保存到字典的键里面, 而字典的值则统一设为 NULL
。
作为例子, 以下图片展示了一个以 REDIS_ENCODING_HT
编码表示的集合, 集合的成员为 elem1
、 elem2
和 elem3
:
Redis 集合类型命令的实现, 主要是对 intset
和 dict
两个数据结构的操作函数的包装, 以及一些在两种编码之间进行转换的函数, 大部分都没有什么需要解释的地方, 唯一比较有趣的是 SINTER 、 SUNION 等命令之下的算法实现, 以下三个小节就分别讨论它们所使用的算法。
求交集算法
SINTER 和 SINTERSTORE 两个命令所使用的求并交集算法可以用 Python 表示如下:
算法的复杂度为
求并集算法
SUNION 和 SUNIONSTORE 两个命令所使用的求并集算法可以用 Python 表示如下:
算法的复杂度为
求差集算法
Redis 为 SDIFF 和 SDIFFSTORE 两个命令准备了两种求集合差的算法。
以 Python 代码表示的算法一定义如下:
这个算法的复杂度为
以 Python 代码表示的算法二定于如下:
这个算法的复杂度同样为
Redis 使用一个程序决定该使用那个求差集算法, 程序用 Python 表示如下:
- Redis命令 -- 有序集合
- redis 命令集合
- redis 集合命令
- redis命令集合
- Redis命令集合
- redis 命令集合
- Redis 集合命令
- Redis之集合命令
- Redis 集合命令
- Redis 有序集合命令
- redis集合相关命令
- Linux redis 命令集合
- Try.Redis.io 命令集合
- redis-集合set相关命令
- redis 集合 set 相关命令
- redis有序集合相关命令
- 五、Redis 基础命令---无序集合
- 六、Redis 基础命令--有序集合
- Java的参数是按值传递的还是按引用?
- JSON文件与XML文件的数据解析
- 使用计算机时出现的问题---多个本地连接
- 2015.09-2016.02 半年总结 项目多也别傻做
- snmptrap的使用方法
- redis 集合命令
- 利用Gson实现简单的json字符串解析
- 【机房重构】——泛型
- firefox显示正常,IE和Chorm显示的网页出现空白换行,""字符惹的祸
- iOS上传照片旋转90度解决方法
- 创建安卓应用的 30 个经验教训
- 看了《小黄人》这么久却没看到这一层!真不想一辈子都当码农!
- iOS内存分配
- QQ WEB前端面试经历