redis中的key的复制

摘要:
下面创建了一个key3,在key3中有一个成员“g”,但是将key1和key2使用SUNIONSTORE命令合并后,结果中不会有“g”。127.0.0.1:6380[1]˃sunionstorekey3key1key25127.0.0.1:6380[1]˃saddkey1fhi3127.0.0.1:6380[1]˃saddkey3g1127.0.0.1:6380[1]˃smemberskey31)"b"2)"a"3)"e"4)"d"5)"c"6)"g"127.0.0.1:6380[1]˃smemberskey11)"a"2)"b"3)"e"4)"d"5)"i"6)"h"7)"c"8)"f"127.0.0.1:6380[1]˃sunionstorekey3key1key28127.0.0.1:6380[1]˃smemberskey31)"b"2)"a"3)"i"4)"h"5)"e"6)"d"7)"c"8)"f"SortSet有序集合的复制首先也来创建一个有序集合zset1,这时候没有zset2这个key127.0.0.1:6380[1]˃zaddzset11a2b3c4d5e5127.0.0.1:6380[1]˃zrangezset10-11)"a"2)"b"3)"c"4)"d"5)"e"然后将zset1拷贝到zset2中127.0.0.1:6380[1]˃ZUNIONSTOREzset21zset15提示有5条内容被处理,然后我们来看看zset2现在的内容:127.0.0.1:6380[1]˃zrangezset20-11)"a"2)"b"3)"c"4)"d"5)"e"太帅了!这一切都是ZUNIONSTORE这个命令的功劳,下面我们讲讲这个ZUNIONSTORE命令怎么用吧:语法:ZUNIONSTOREdestinationnumkeyskey[key...][WEIGHTSweight][SUM|MIN|MAX]ZUNIONSTORE命令其实就是求并集的命令,他的参数说明如下:destination:存放合并结果集的key。numkeys:有几个集合的内容需要合并key[key…
redis中Set集合SortSet有序集合的复制
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这个key

127.0.0.1:6380[1]> zadd zset1 1 a 2 b 3 c 4 d 5e
(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 1zset1
(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中的key的复制》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Elasticsearch之批量操作bulk关于 Total Commander 的标签(Tab)功能【转】下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

使用podman容器部署飞儿云框架

首先 podman pull php:7.4-apache 删除之前运行的 podman rm -f 8082 然后 podman run -d --name 8082 -p 8082:80-v /home/firadio/firadio-yun-php/:/home/firadio/firadio-yun-php/-v /home/firadio/fir...

miaosha

1:跨域请求配置 后端Controller 添加注解 @CrossOrigin(origins = {"*"},allowCredentials = "true")前端ajax 请求添加xhrFields: { withCredentials: true } 2:跨域解决方案 1:jsonp2:cors3:node 转发4:nginx 反向代理  3:命...

Django使用redis实现缓存

实现缓存的方式,有多种:本地内存缓存,数据库缓存,文件系统缓存。这里介绍使用Redis数据库进行缓存。 配置 1 CACHES ={ 2 "default": { 3 "BACKEND": "django_redis.cache.RedisCache", 4 "LOCATION": "redis://127.0.0.1:6379/1", 5 "OPTION...

window下远程连接redis服务

首先下redis包: 下载地址:https://github.com/MSOpenTech/redis/releases。 之后:1.注释掉redis.windows-service.conf 中的bind 127.0.0.1这一行(在前面加#) 3.同文件中将protected-mode yes 改成 protected-mode no 4.保存并重启r...

redis 系列22 复制Replication (下)

一. 复制环境准备   1.1 主库环境(172.168.18.201) 环境 说明 操作系统版本 CentOS  7.4.1708  IP地址 172.168.18.201 网关Gateway 172.168.18.1 DNS 172.168.16.11 Redis版本和端口 4.0.6  和 6379 Redis 密码 12...

线上redis热key问题

一个安静的晚上突然被群里报警打断,然后果断不情愿的爬起来找问题,通过监控发现一个服务的QPS暴增,接口响应延迟也上来了,达到s级别了,所以赶紧找问题。 因为应用很依赖redis,第一时间先看是不是它,果然还真是它,看下图: 确定了问题的方向就该找具体原因了,进一步查看Zabbix发现其中一台redis的CPU使用率明显升高,如下图: 连到机器上top发...