1、Redis keys命令
Redis Keys 命令用于查找所有符合给定模式 pattern 的 key 。。
基本语法
redis KEYS 命令基本语法如下:
redis 127.0.0.1:6379> KEYS PATTERN
可用版本
>= 1.0.0
返回值
符合给定模式的 key 列表 (Array)。
实例
首先创建一些 key,并赋上对应值:
redis 127.0.0.1:6379> SET w3c1 redis
OK
redis 127.0.0.1:6379> SET w3c2 mysql
OK
redis 127.0.0.1:6379> SET w3c3 mongodb
OK
查看以w3c
开头的所有key
127.0.0.1:6379[2]> keys w3c*
1) "w3c1"
2) "w3c3"
3) "w3c2"
获取 redis 中所有的 key 可用使用 * 。
127.0.0.1:6379[2]> keys *
1) "w3c1"
2) "w3c3"
3) "w3c2"
2、Redis Expireat 命令
Redis Expireat 命令用于以 UNIX 时间戳(unix timestamp)格式设置 key 的过期时间。key 过期后将不再可用。
语法
redis Expireat 命令基本语法如下:
redis 127.0.0.1:6379> Expireat KEY_NAME TIME_IN_UNIX_TIMESTAMP
返回值
设置成功返回 1 。
当 key 不存在或者不能为 key 设置过期时间时返回 0 。
实例
首先创建一个 key 并赋值:
127.0.0.1:6379[2]> set name zhangsan
为 key 设置过期时间:
########################################################################
# EXPIREAT 单位为毫秒
127.0.0.1:6379[2]> EXPIREAT name 10 # 以毫秒为单位 设置成功返回1
(integer) 1
127.0.0.1:6379[2]> ttl name # ttl key 可以查看这个key所生育过期时间 返回秒数
(integer) -2 # 返回 -2 该key已被过期
########################################################################
# EXPIRE 单位为秒
127.0.0.1:6379[2]> EXPIRE name 15
(integer) 1
127.0.0.1:6379[2]> ttl name
(integer) 9
3、Redis EXISTS 命令
Redis EXISTS 命令用于检查给定 key 是否存在。
语法
redis EXISTS 命令基本语法如下:
redis 127.0.0.1:6379> EXISTS KEY_NAME
返回值
若 key 存在返回 1 ,否则返回 0
127.0.0.1:6379[2]> set name 王五
OK
127.0.0.1:6379[2]> exists name
(integer) 1
127.0.0.1:6379[2]> exists age
(integer) 0
4、Redis Renamenx 命令
Redis Renamenx 命令用于在新的 key 不存在时修改 key 的名称 。
key重命名:当为一个key重命名的时候、如果重命名的名称在当前数据库中存在那么设置失败、返回0
如果不存在那么设置成功、返回1
语法
redis Renamenx 命令基本语法如下:
redis 127.0.0.1:6379> RENAMENX OLD_KEY_NAME NEW_KEY_NAME
返回值
修改成功时,返回 1 。 如果 NEW_KEY_NAME 已经存在,返回 0 。
127.0.0.1:6379[2]> set oldplay zhangsan # 设置一个新 key
OK
127.0.0.1:6379[2]> set xianplay zhangsan # 设置第二个新 key
OK
127.0.0.1:6379[2]> keys * # 查看全部 key
1) "xianplay"
2) "oldplay"
127.0.0.1:6379[2]> RENAMENX oldplay new_play # 修改第一个key的名称
(integer) 1 # 成功返回1
127.0.0.1:6379[2]> keys * # 再次查看已被修改
1) "xianplay"
2) "new_play"
127.0.0.1:6379[2]> RENAMENX new_play xianplay # 修改第二个key的名称为一个已存在的key 失败
(integer) 0
5、Redis Pttl 命令
Redis Pttl 命令以毫秒为单位返回 key 的剩余过期时间。
语法
redis Pttl 命令基本语法如下:
redis 127.0.0.1:6379> PTTL KEY_NAME
返回值
当 key 不存在时,返回 -2 。
当 key 存在但没有设置剩余生存时间时,返回 -1 。 否则,以毫秒为单位,返回 key 的剩余生存时间。
**注意:**在 Redis 2.8 以前,当 key 不存在,或者 key 没有设置剩余生存时间时,命令都返回 -1 。
127.0.0.1:6379[2]> set name zhangsan
OK
127.0.0.1:6379[2]> EXPIRE name 15
(integer) 1
127.0.0.1:6379[2]> ttl name
(integer) 12
127.0.0.1:6379[2]> PTTL name
(integer) 6857
127.0.0.1:6379[2]> ttl name
(integer) 1
127.0.0.1:6379[2]> ttl name
(integer) -2
127.0.0.1:6379[2]> EXPIRE name 15
(integer) 0
127.0.0.1:6379[2]> keys *
(empty list or set)
127.0.0.1:6379[2]> set name zhangsan
OK
127.0.0.1:6379[2]> EXPIRE name 15
(integer) 1
127.0.0.1:6379[2]> ttl name # 剩余时间 pttl返回毫秒数 ttl返回秒数
(integer) 9
###################################################################
###### pttl返回毫秒数 对应 EXPIREAT 设置的过期时间 #############
###### ttl返回毫秒数 对应 EXPIRE 设置的过期时间 #############
###################################################################
6、Redis DEL 命令
Redis DEL 命令用于删除已存在的键。不存在的 key 会被忽略。
语法
redis DEL 命令基本语法如下:
redis 127.0.0.1:6379> DEL KEY_NAME
返回值
被删除 key 的数量。
实例
首先,我们在 redis 中创建一个 key 并设置值。
redis 127.0.0.1:6379> SET w3ckey redisOK
现在我们删除已创建的 key。
redis 127.0.0.1:6379> DEL w3ckey
(integer) 1
127.0.0.1:6379[2]> del name # 不存在的key会被忽略 返回 0
(integer) 0
7、Redis Expire 命令
Redis Expire 命令用于设置 key 的过期时间。key 过期后将不再可用。
语法
redis Expire 命令基本语法如下:
redis 127.0.0.1:6379> Expire KEY_NAME TIME_IN_SECONDS
返回值
设置成功返回 1 。
当 key 不存在或者不能为 key 设置过期时间时返回 0 。
127.0.0.1:6379[2]> set name zhangsan
OK
127.0.0.1:6379[2]> keys *
1) "name"
127.0.0.1:6379[2]> EXPIRE name 20
(integer) 1
127.0.0.1:6379[2]> ttl name
(integer) 15
8、Redis DUMP 命令
Redis DUMP 命令用于序列化给定 key ,并返回被序列化的值。
语法
redis DUMP 命令基本语法如下:
redis 127.0.0.1:6379> DUMP KEY_NAME
返回值
如果 key 不存在,那么返回 nil 。 否则,返回序列化之后的值。
127.0.0.1:6379[2]> set green "hello word redis!" # 设置一个key
OK
127.0.0.1:6379[2]> DUMP green # 序列化 存在的 key 返回序列化后的值
"\x00\x11hello word redis!\t\x00k\xcd\x8b\xe9\xad\x88\xbe\xb6"
127.0.0.1:6379[2]> dump age # 序列化不存在的 key 返回null
(nil)
9、Redis RANDOMKEY 命令
Redis RANDOMKEY 命令从当前数据库中随机返回一个 key 。
语法
redis RANDOMKEY 命令基本语法如下:
redis 127.0.0.1:6379> RANDOMKEY
返回值
当数据库不为空时,返回一个 key 。 当数据库为空时,返回 nil 。
127.0.0.1:6379[2]> keys *
1) "green"
2) "email"
3) "age"
4) "name"
127.0.0.1:6379[2]> RANDOMKEY
"name"
127.0.0.1:6379[2]> RANDOMKEY
"name"
127.0.0.1:6379[2]> RANDOMKEY
"age"
127.0.0.1:6379[2]> RANDOMKEY
"name"
127.0.0.1:6379[2]> RANDOMKEY
"age"
127.0.0.1:6379[2]> RANDOMKEY
"age"
127.0.0.1:6379[2]> RANDOMKEY
"age"
127.0.0.1:6379[2]> RANDOMKEY
"name"
127.0.0.1:6379[2]> RANDOMKEY
"green"
127.0.0.1:6379[2]> RANDOMKEY
"green"
127.0.0.1:6379[2]> RANDOMKEY
"name"
10、Redis MOVE 命令
Redis MOVE 命令用于将当前数据库的 key 移动到给定的数据库 db 当中。
语法
redis Move 命令基本语法如下:
redis 127.0.0.1:6379> MOVE KEY_NAME DESTINATION_DATABASE
返回值
移动成功返回 1 ,失败则返回 0 。
# 切换数据库 select index(可选0-15)
### 这里我们为了方便后续的操作、使用 2 和 3 好数据库
127.0.0.1:6379[2]> keys * # 查询2 号库中所有的key
1) "green"
2) "email"
3) "age"
4) "name"
127.0.0.1:6379[2]> select 3 # 切换到 3 号库
OK
127.0.0.1:6379[3]> keys * # 查询 3 号库所有的
(empty list or set)
127.0.0.1:6379[3]> select 2 # 在切换到 2 号库
OK
127.0.0.1:6379[2]> MOVE name 3 # 将 2 号库中 key为name 移动到 3 号库
(integer) 1
127.0.0.1:6379[2]> keys * # 查看2 号库中的name确实不见了
1) "green"
2) "email"
3) "age"
127.0.0.1:6379[2]> SELECT 3 # 切换到3 号库
OK
127.0.0.1:6379[3]> keys * # 查看3 号库确实移动过来了
1) "name"
127.0.0.1:6379[3]> SELECT 2
OK
127.0.0.1:6379[2]> set name zhansgan
OK
127.0.0.1:6379[2]> SELECT 3
OK
127.0.0.1:6379[3]> MOVE name 2 # 移动 3 号库中key为name的数据到2 号库中、返回0 说明不能移动当前key到指定库中已存在相同名称的 key
(integer) 0
相同名称的key不能移动
11、Redis PERSIST 命令
Redis PERSIST 命令用于移除给定 key 的过期时间,使得 key 永不过期。
语法
redis PERSIST 命令基本语法如下:
redis 127.0.0.1:6379> PERSIST KEY_NAME
返回值
当过期时间移除成功时,返回 1 。 如果 key 不存在或 key 没有设置过期时间,返回 0 。
127.0.0.1:6379[2]> keys *
1) "green"
2) "email"
3) "age"
4) "name"
127.0.0.1:6379[2]> EXPIRE name 60 # 设置name的过期时间60s
(integer) 1
127.0.0.1:6379[2]> ttl name # 查看过期时间
(integer) 57
127.0.0.1:6379[2]> PERSIST name # 移出过期时间
(integer) 1
127.0.0.1:6379[2]> ttl name
(integer) -1
127.0.0.1:6379[2]> keys * # 确实还存在
1) "green"
2) "email"
3) "age"
4) "name"
12、Redis Rename 命令
Redis Rename 命令用于修改 key 的名称 。
返回值
改名成功时提示 OK ,失败时候返回一个错误。
当 OLD_KEY_NAME 和 NEW_KEY_NAME 相同,或者 OLD_KEY_NAME 不存在时,返回一个错误。 当 NEW_KEY_NAME 已经存在时, RENAME 命令将覆盖旧值。
127.0.0.1:6379[2]> keys *
1) "green"
2) "email"
3) "age"
4) "name"
127.0.0.1:6379[2]> get name
"zhansgan"
127.0.0.1:6379[2]> RENAME name age
OK
127.0.0.1:6379[2]> get name
(nil)
127.0.0.1:6379[2]> keys *
1) "green"
2) "age"
3) "email"
127.0.0.1:6379[2]> get age
"zhansgan"
总结:就是为key设置新的名称的时候如果新名称不存在那么就设置成功、如果设置的新名称存在、那么就将被修改key名称的value覆盖到已存在key名称的key的value中替换掉、并且删除被修改的key
13、Redis Type 命令
Redis Type 命令用于返回 key 所储存的值的类型。
语法
redis Renamenx 命令基本语法如下:
redis 127.0.0.1:6379> TYPE KEY_NAME
返回值
返回 key 的数据类型,数据类型有:
- none (key不存在)
- string (字符串)
- list (列表)
- set (集合)
- zset (有序集)
- hash (哈希表)
# 字符串
redis> SET weather "sunny"
OK
redis> TYPE weather
string
# 列表
redis> LPUSH book_list "programming in scala"
(integer) 1
redis> TYPE book_list
list
# 集合
redis> SADD pat "dog"
(integer) 1
redis> TYPE pat
set