Redis key

del 删除key

Redis DEL 命令用于删除已存在的键。不存在的 key 会被忽略。

127.0.0.1:6379> keys *
1) "db"
2) "height"
3) "age"
4) "word"
5) "name"
127.0.0.1:6379> del word
(integer) 1
127.0.0.1:6379> keys *
1) "db"
2) "height"
3) "age"
4) "name"
127.0.0.1:6379> 

dump 序列化

Redis DUMP 命令用于序列化给定 key ,并返回被序列化的值。

127.0.0.1:6379> set greeting "hello, welcome to redis world !!"
OK
127.0.0.1:6379> dump greeting
"\x00 hello, welcome to redis world !!\t\x00\xce[\xe09f~\xcbe"
127.0.0.1:6379> dump 1h2  #key不存在返回nil
(nil)
127.0.0.1:6379> 

exists检测key是否存在

Redis EXISTS 命令用于检查给定 key 是否存在。

127.0.0.1:6379> exists name
(integer) 1 #存在返回1
127.0.0.1:6379> exists 1h2h2
(integer) 0 #不存在返回0
127.0.0.1:6379> 

expire 设置key过期时间

Redis Expire 命令用于设置 key 的过期时间,key 过期后将不再可用。单位以秒计。

127.0.0.1:6379> set temp hel10
OK
127.0.0.1:6379> expire temp 30 #设置到期时间30秒
(integer) 1 #成功返回1,不成功返回0
127.0.0.1:6379> ttl temp #查看存活时间
(integer) 26

expireat 以unix时间戳的形式设置key过期时间

Redis Expireat 命令用于以 UNIX 时间戳(unix timestamp)格式设置 key 的过期时间。key 过期后将不再可用。

127.0.0.1:6379> set key1 hello
OK
127.0.0.1:6379> expireat key1 1293840000
(integer) 1
127.0.0.1:6379> ttl key1
(integer) -2

pexpire 设置过期单位毫秒

Redis PEXPIRE 命令和 EXPIRE 命令的作用类似,但是它以毫秒为单位设置 key 的生存时间,而不像 EXPIRE 命令那样,以秒为单位。

pexpireat 设置过期时间戳以毫秒计算

keys 正则模糊匹配

127.0.0.1:6379> keys *
1) "db"
2) "height"
3) "greeting"
4) "age"
5) "name"
127.0.0.1:6379> keys *a*
1) "age"
2) "name"
127.0.0.1:6379> 

move

Redis MOVE 命令用于将当前数据库的 key 移动到给定的数据库 db 当中。

127.0.0.1:6379> select 0 #切换到数据0
OK
127.0.0.1:6379> set name zhangsan #设置值
OK
127.0.0.1:6379> get name #查询值以验证
"zhangsan"
127.0.0.1:6379> move zhangsan 1 #移动不存在的值到数据库1,返回0
(integer) 0
127.0.0.1:6379> move name 1 #移动存在的值,返回1
(integer) 1
127.0.0.1:6379> get name #查询被移走的值
(nil)
127.0.0.1:6379> select 1 #切换到数据库1
OK
127.0.0.1:6379[1]> get name #查询拥有的值
"zhangsan"

# 如果两个数据库拥有相同key的值会出现什么情况?
127.0.0.1:6379> select 0 
OK
127.0.0.1:6379> set name hello
OK
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> set name world
OK
127.0.0.1:6379[1]> move name 0 #移动失败
(integer) 0
127.0.0.1:6379[1]> get name #值不变
"world"
127.0.0.1:6379[1]> select 1
OK
127.0.0.1:6379[1]> get name #值不变
"world"
# 如果移动一个不存在的值
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> exists hh
(integer) 0
127.0.0.1:6379> move hh 1
(integer) 0
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> exists hh
(integer) 0

ttl 返回key生存时间

pttl 返回毫秒过期时间

Redis Pttl 命令以毫秒为单位返回 key 的剩余过期时间。

127.0.0.1:6379> set key hello
OK
127.0.0.1:6379> expire key 60
(integer) 1
127.0.0.1:6379> ttl key
(integer) 57
127.0.0.1:6379> pttl key
(integer) 53282

persist 移除key过期时间

Redis PERSIST 命令用于移除给定 key 的过期时间,使得 key 永不过期。

127.0.0.1:6379> set key hello #设置值
OK
127.0.0.1:6379> expire key 60 #设置过期时间60秒
(integer) 1
127.0.0.1:6379> ttl key
(integer) 58
127.0.0.1:6379> ttl key
(integer) 54
127.0.0.1:6379> persist key #移除过期时间
(integer) 1
127.0.0.1:6379> ttl key
(integer) -1

randomkey

Redis RANDOMKEY 命令从当前数据库中随机返回一个 key 。

127.0.0.1:6379> mset name huzd age 25 sex mele
OK
127.0.0.1:6379> randomkey
"name"
127.0.0.1:6379> randomkey
"sex"

rename key重命名

Redis Rename 命令用于修改 key 的名称 。

127.0.0.1:6379> set name huzd
OK
127.0.0.1:6379> rename name username
OK
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379> get username
"huzd"
# key 不存在的情况
127.0.0.1:6379> rename hh hhh
(error) ERR no such key
#key 存在的情况
127.0.0.1:6379> set pc lenovo
OK
127.0.0.1:6379> set computer dell
OK
127.0.0.1:6379> rename pc computer
OK
127.0.0.1:6379> get pc
(nil)
127.0.0.1:6379> get computer
"lenovo"


renamenx

Redis Renamenx 命令用于在新的 key 不存在时修改 key 的名称 。

127.0.0.1:6379> set key1 hh
OK
127.0.0.1:6379> set key2 ee
OK
127.0.0.1:6379> renamenx key1 key2 #存在报错
(integer) 0
127.0.0.1:6379> get key1
"hh"
127.0.0.1:6379> get key2
"ee"

scan

type key

返回key值对应的类型

127.0.0.1:6379> keys *
1) "key2"
2) "key1"
127.0.0.1:6379> type key1
string
127.0.0.1:6379> type key2
string