八,Redis对于键的管理

单个键管理

重命名键

在重命名键中通常使用rename或者是renamenx,两者都可以完成重命名的操作,但是唯一不同的是rename指令不会去检查目标键存在与否,如果对于一个已经存在的键进行rename操作,就会使得目标键的原来的value值产生副作用,具体可以看下下面的操作截图;而renamenx只会对目标键不存在的情况进行操作,如果目标键已经存在了,那么执行这个命令是没有影响的。
这里写图片描述
由上面的操作就可以看出来rename的操作对targetKey的值做出了修改,从原来的targetValue变成现在的sourceValue,接下来看一下renamnx的作用
这里写图片描述
在进行操作重命名的过程中redis可能会执行del的操作,所以在存在key的值数量很大情况下,执行该操作可能会有阻塞redis情况。

随机返回键

通过操作randomkey指令可以指定数据库随机的返回一个key,现在数据库中存在着五个key,可以通过keys 来查看数据库中存在key的信息,但是使用该命令,是前提知道该数据 库中存在key的数量大小,如果数据库中存在大量的key,通过keys 来遍历key的信息,会造成redis的阻塞。
这里写图片描述

设置过期时间

通常都是使用expire来为key设置过期时间,或者是在为key进行set操作的时候同时为key设置过期时间,操作是set key value ex 20或者是set key value px 20000这个ex表示的是以秒为单位,而px单位是毫秒。或者是通过expire key expireTime这样的方法为已经设置了key的数据再设置过期时间,对应的毫秒操作是pexpire;或者是在指定的时间过期expireat或pexpireat。既然有过期时间的操作,我们可以通过ttl来查看当前的key距离过期时间还有多少,对应的毫秒应该使用pttl,对于ttl的返回值可以有以下的区分

  1. 返回值大于零的数值,表示的是该键对于要过期的时间还有多长时间
  2. 返回值为-1,表示没有为该键设置过期时间
  3. 返回值为-2,表示该键不存在,或者叫做这个键已经过期了
    这里写图片描述
    persist指令可以为当前的key给清除过期时间,或者是我们为字符串的key给进行set操作也会给当前的key给清除过期时间,下面看下操作
    这里写图片描述

多个键管理

键的迁移

迁移键的功能会在我们想把部分数据冲源redis迁移到目标的redis中,而redis为我们提供了三种方法来迁移键move,dump + restore,migrate,但是他们三种都是各种场景的限制,同时也有各自的优缺点的。

move

move命令用于在redis内部进行数据迁移,redis内部可以有多个数据库(在redis内部默认是有16个数据库的,从0到15,通常我们操作的是0号数据库,选择不同的数据库应该用命令select index,每个数据库中的数据是相互独立的)。move key db是这个move的基本用法。
这里写图片描述

dump+restore

dump+restore可以实现在不同的redis实例之间进行数据迁移,具体过程如下
1. 在源redis上,执行dump命令是的键的值得到序列化,格式是采用的是RDB
2. 在目标redis上,restore命令将上面序列化的值进行复原
3. 该命令并不具有原子性,是通过分布的形式完成的,

migrate

migrate实现方式和dump+restore的方式差不多,主要的区别是
1. 具有原子性,不需要在多个redis实例上开启客户端,只需要在源redis上执行migrate命令即可
2. migrate命令的传输直接在源redis和目标redis上完成
3. 目标redis完成restore后会发送OK给源redis,源redis接收后会根据migrate对应的选项来决定是否在源redis上删除对应的键
migrate host port key|”” destination timeout [copy] [replace] [keys key [key …]]
copy:代表的是对迁移后的数据是否进行删除操作
replace:代表的是目标redis不管存不存在对应的键都会进行数据覆盖
“”:如果要对多个键进行迁移,就要将key换成”“,例如
migrate 192.168.20.128 6379 “” 0 1000 copy replace key1,key2,key3,key4

猜你喜欢

转载自blog.csdn.net/u010871004/article/details/79511222