redis中Set集合SortSet有序集合的复制
2016-10-18 16:29
429 查看
redis中Set集合SortSet有序集合的复制
redis集合类型中是没有复制命令的,我所说的复制,是通过redis的其他指令来实现
需求:将key1的内容全部拷贝到key2中
下面我们来看看在redis中怎么处理
Set集合的复制
首先,我们创建一个集合key1,这时key2还没有创建127.0.0.1:6380[1]> SADD key1 "a" (integer) 1 127.0.0.1:6380[1]> SADD key1 "b" (integer) 1 127.0.0.1:6380[1]> SADD key1 "c" (integer) 1 127.0.0.1:6380[1]> smembers key1 1) "b" 2) "a" 3) "c"
然后将key1拷贝到key2中
127.0.0.1:6380[1]> SUNIONSTORE key2 key1 temp (integer) 3 127.0.0.1:6380[1]> smembers key1 1) "b" 2) "a" 3) "c" 127.0.0.1:6380[1]> smembers key2 1) "a" 2) "b" 3) "c" 127.0.0.1:6380[1]> smembers temp (empty list or set)
上面例子中的temp是一个不存在的key
如果key2是已经存在的key,也可以进行复制,不过这个时候,就是将key1中所有内容都移动key2中。
127.0.0.1:6380[1]> SADD key1 "d" (integer) 1 127.0.0.1:6380[1]> SADD key1 "e" (integer) 1 127.0.0.1:6380[1]> smembers key1 1) "d" 2) "b" 3) "a" 4) "c" 5) "e" 127.0.0.1:6380[1]> SUNIONSTORE key2 key1 temp (integer) 5 127.0.0.1:6380[1]> smembers key2 1) "a" 2) "b" 3) "d" 4) "c" 5) "e" 127.0.0.1:6380[1]> smembers temp (empty list or set)
使用SUNIONSTORE命令可以很容易的实现Set的复制,下面我们看看SUNIONSTORE命令的使用方式:
语法:
SUNIONSTORE destination key [key ...]
destination:存放合并结果集的key。
key [key …]:一个或者多个集合
注意:
如果是已经存在的集合,会删除原来的数据,只会保留合并结果。
下面创建了一个key3,在key3中有一个成员 “g” ,但是将key1和key2使用SUNIONSTORE命令合并后,结果中不会有 “g” 。
127.0.0.1:6380[1]> sunionstore key3 key1 key2 (integer) 5 127.0.0.1:6380[1]> sadd key1 f h i (integer) 3 127.0.0.1:6380[1]> sadd key3 g (integer) 1 127.0.0.1:6380[1]> smembers key3 1) "b" 2) "a" 3) "e" 4) "d" 5) "c" 6) "g" 127.0.0.1:6380[1]> smembers key1 1) "a" 2) "b" 3) "e" 4) "d" 5) "i" 6) "h" 7) "c" 8) "f" 127.0.0.1:6380[1]> sunionstore key3 key1 key2 (integer) 8 127.0.0.1:6380[1]> smembers key3 1) "b" 2) "a" 3) "i" 4) "h" 5) "e" 6) "d" 7) "c" 8) "f"
SortSet有序集合的复制
首先也来创建一个有序集合zset1, 这时候没有zset2这个key127.0.0.1:6380[1]> zadd zset1 1 a 2 b 3 c 4 d 5 e (integer) 5 127.0.0.1:6380[1]> zrange zset1 0 -1 1) "a" 2) "b" 3) "c" 4) "d" 5) "e"
然后将zset1拷贝到zset2中
127.0.0.1:6380[1]> ZUNIONSTORE zset2 1 zset1 (integer) 5
提示有5条内容被处理,然后我们来看看zset2现在的内容:
127.0.0.1:6380[1]> zrange zset2 0 -1 1) "a" 2) "b" 3) "c" 4) "d" 5) "e"
太帅了!跟zset1的内容一模一样。
这一切都是ZUNIONSTORE这个命令的功劳,下面我们讲讲这个ZUNIONSTORE命令怎么用吧:
语法:
ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight] [SUM|MIN|MAX]
ZUNIONSTORE命令其实就是求并集的命令,他的参数说明如下:
destination: 存放合并结果集的key。如果是已经存在的集合,会删除原来的数据,只会保留合并结果。
numkeys:有几个集合的内容需要合并
key [key …]: 一个或者多个集合
[WEIGHTS weight]:分数乘积因子,默认是1.如果设置以后,在合并时,会将待合并的集合中的分数乘以乘积因子,然后将结果保存到合并结果集中。
[SUM|MIN|MAX]:结果集的聚合方式。默认是SUM,如果要合并的集合中都有同一个名称的元素,它们的分数以何种方式存储到新的结果集中。SUM:相加;MIN:取最小的值;MAX:取最大的值。
相关文章推荐
- Redis(3-5):有序集合类型
- redis必杀命令:有序集合(sorted set)
- 使用redis有序集合sorted set设计高效查询ip所在地
- redis之有序集合类型(Zset)——排行榜的实现
- Redis 有序集合
- redis 数据结构 - 有序集合 sort set
- redis 有序集合小试
- nosql数据库redis学习 集合set以及有序集合zset
- Python操作Redis之有序集合
- 基于Redis有序集合的终端在线推送解决方案
- Redis order set 有序集合
- redis 集合set 与 有序集合sorted set
- Redis有序集合
- Redis 数据库之有序集合(zset)
- Redis学习手册——有序集合(Sorted Sets数据类型)
- 判断Redis有序集合中是否存在某个成员的方法
- redis有序集合的使用
- Redis-Redis实战(有序集合)
- NoSQL之Redis对zset(有序集合)数据类型的操作
- go操作redis的有序集合(zset)