Redis的keys命令用于管理键。使用Redis的keys命令语法如下所示:
语法
redis 127.0.0.1:6379> COMMAND KEY_NAME
Redis的键命令
如下表显示键的一些基本命令:
S.N. | 命令 & 描述 |
---|---|
1 | DEL key 此命令删除键,如果存在 |
2 | DUMP key 该命令返回存储在指定键的值的序列化版本。 |
3 | EXISTS key 此命令检查该键是否存在。 |
4 | EXPIRE key seconds 指定键的过期时间 |
5 | EXPIREAT key timestamp 指定的键过期时间。在这里,时间是在Unix时间戳格式 |
6 | PEXPIRE key milliseconds 设置键以毫秒为单位到期 |
7 | PEXPIREAT key milliseconds-timestamp 设置键在Unix时间戳指定为毫秒到期 |
8 | KEYS pattern 查找与指定模式匹配的所有键 |
9 | MOVE key db 移动键到另一个数据库 |
10 | PERSIST key 移除过期的键 |
11 | PTTL key 以毫秒为单位获取剩余时间的到期键。 |
12 | TTL key 获取键到期的剩余时间。 |
13 | RANDOMKEY 从Redis返回随机键 |
14 | RENAME key newkey 更改键的名称 |
15 | RENAMENX key newkey 重命名键,如果新的键不存在 |
16 | TYPE key 返回存储在键的数据类型的值。 |
DEL key
Redis的DEL命令用于删除redis中现有键。
返回值
被删除的键的数目。
语法
Redis的DEL命令的基本语法如下所示:
redis 127.0.0.1:6379> DEL KEY_NAME
例子
首先,在Redis的一个键,并设置一定的值。
redis 127.0.0.1:6379> SET key value OK现在删除以前生成键
redis 127.0.0.1:6379> DEL key (integer) 1
Redis的DUMP命令用于获取存储在redis的指定键数据的序列化版本。
返回值
序列化的值(字符串)
语法
Redis的DUMP命令的基本语法如下所示:
redis 127.0.0.1:6379> DUMP KEY_NAME
例子
首先,在Redis创建一个键,并设置一定的值。
redis 127.0.0.1:6379> SET key redis OK现在创建之前创建的键转储
redis 127.0.0.1:6379> DUMP key "\x00\x05redis\x06\x00S\xbd\xc1q\x17z\x81\xb2"
EXISTS key
Redis EXISTS命令被用来检查键是否存在于redis。
返回值
整数值
1, 如果键存在。
0, 如果键不存在。
语法
Redis exists命令的基本语法,如下所示:
redis 127.0.0.1:6379> EXISTS KEY_NAME
例子
redis 127.0.0.1:6379> EXISTS new-key (integer) 0现在,创建名为new-key新建一个键并检查是否存在。
redis 127.0.0.1:6379> EXISTS new-key (integer) 1
EXPIRE key
Redis Expire命令用于设定键有效期。到期时间后键不会在Redis中使用。
返回值
整数值1或0
1, 如果设置的键超时。
0, 如果键不存在,或者未设置超时。
语法
Redis expire命令的基本语法如下所示:
redis 127.0.0.1:6379> Expire KEY_NAME TIME_IN_SECONDS
首先,在Redis创建一个键,并设置一定的值。
redis 127.0.0.1:6379> SET key redis OK
现在设置以前创建的键超时
redis 127.0.0.1:6379> EXPIRE key 60 (integer) 1
在上面的例子中键yiibai被设定一分钟(或者60秒)的时间。 1分钟后,键会自动失效。
EXPIREAT key timestamp
Redis Expireat命令是用来以Unix时间戳格式设置键的到期时间。到期时间键后不会在Redis中使用。
返回值
整数值1或0
1, 如果设置的键超时。
0, 如果键不存在,或者未设置超时。
语法
Redis Expireat命令的基本语法如下所示:
redis 127.0.0.1:6379> Expireat KEY_NAME TIME_IN_UNIX_TIMESTAMP
例子首先,在Redis创建一个键,并设置一定的值。
redis 127.0.0.1:6379> SET key redis OK现在设置以前创建的键超时
redis 127.0.0.1:6379> EXPIREAT key 1293840000 (integer) 1 EXISTS yiibai (integer) 0
PEXPIRE key milliseconds
这个命令和EXPIRE命令的作用类似,但是它以毫秒为单位设置 key 的生存时间,而不像EXPIRE命令那样,以秒为单位。
返回值
integer-reply, 只有以下两种值:
- 设置成功,返回 1
- key 不存在或设置失败,返回 0
例子
redis> SET mykey "Hello"
OK
redis> PEXPIRE mykey 1500
(integer) 1
redis> TTL mykey
(integer) 1
redis> PTTL mykey
(integer) 1499
redis>
PEXPIREAT key millisecnds-timestamp
PEXPIREAT
这个命令和EXPIREAT命令类似,但它以毫秒为单位设置 key 的过期unix
时间戳,而不是像EXPIREAT那样,以秒为单位。
返回值
integer-reply, 只有以下两种值:
- 如果生存时间设置成功,返回 1 。
- 当 key 不存在或没办法设置生存时间时,返回 0 。 (查看: EXPIRE命令获取更多信息).
例子
redis> SET mykey "Hello"
OK
redis> PEXPIREAT mykey 1555555555005
(integer) 1
redis> TTL mykey
(integer) 192569170
redis> PTTL mykey
(integer) 192569169649
redis>
KEYS pattern
查找所有符合给定模式pattern(正则表达式)的 key 。
时间复杂度为O(N),N为数据库里面key的数量。
例如,Redis在一个有1亿个key的数据库里面执行一次查询需要的时间是40毫秒 。
警告: KEYS
的速度非常快,但在一个大的数据库中使用它仍然可能造成性能问题,如果你需要从一个数据集中查找特定的 KEYS
, 你最好还是用 Redis 的集合结构 SETS 来代替。
支持的正则表达模式:
h?llo
匹配hello
,hallo
和hxllo
h*llo
匹配hllo
和heeeello
h[ae]llo
匹配hello
和hallo,
但是不匹配hillo
h[^e]llo
匹配hallo
,hbllo
, … 但是不匹配hello
h[a-b]llo
匹配hallo
和hbllo
如果你想取消字符的特殊匹配(正则表达式,可以在它的前面加\
。
返回值
array-reply: 所有符合条件的key
例子
redis> MSET one 1 two 2 three 3 four 4
OK
redis> KEYS *o*
1) "four"
2) "one"
3) "two"
redis> KEYS t??
1) "two"
redis> KEYS *
1) "four"
2) "three"
3) "one"
4) "two"
redis>
MOVE key db
将当前数据库的 key 移动到给定的数据库 db 当中。
如果当前数据库(源数据库)和给定数据库(目标数据库)有相同名字的给定 key ,或者 key 不存在于当前数据库,那么 MOVE 没有任何效果。
因此,也可以利用这一特性,将 MOVE
当作锁(locking)原语(primitive)。
返回值
- 移动成功返回 1
- 失败则返回 0
PERSIST key
移除给定key的生存时间,将这个 key 从『易失的』(带生存时间 key )转换成『持久的』(一个不带生存时间、永不过期的 key )。
返回值
integer-reply, 只有以下两种值:
- 当生存时间移除成功时,返回 1 .
- 如果 key 不存在或 key 没有设置生存时间,返回 0 .
例子
redis> SET mykey "Hello"
OK
redis> EXPIRE mykey 10
(integer) 1
redis> TTL mykey
(integer) 10
redis> PERSIST mykey
(integer) 1
redis> TTL mykey
(integer) -1
redis>
PTTL key
这个命令类似于TTL命令,但它以毫秒为单位返回 key 的剩余生存时间,而不是像TTL命令那样,以秒为单位。
在Redis 2.6和之前版本,如果key不存在或者key存在但是已经过期将返回-1
。
从 Redis 2.8开始,错误返回值发送了如下变化:
- 如果key不存在返回
-2
- 如果key存在但是已经过期返回
-1
返回值
integer-reply: TTL以毫秒为单位,或者返回一个错误值 (参考上面的描述).
例子
redis> SET mykey "Hello"
OK
redis> EXPIRE mykey 1
(integer) 1
redis> PTTL mykey
(integer) 999
redis>
TLL key
Redis TTL命令用于获取键到期的剩余时间(秒)。
返回值
以秒为单位的整数值TTL或负值
-1, 如果key没有到期超时。
-2, 如果键不存在
例子
127.0.0.1:6397> set key value OK 127.0.0.1:6397> EXPIRE key 60 (integer) 1 127.0.0.1:6397> ttl key (integer) 57 127.0.0.1:6397> ttl key (integer) 56 127.0.0.1:6397> pttl key (integer) 53352 127.0.0.1:6397> ttl 1 (integer) -2 127.0.0.1:6397> PERSIST key (integer) 1 127.0.0.1:6397> ttl key (integer) -1
RANDOMKEY
RENAME key newkey
将key重命名为newkey,如果key与newkey相同,将返回一个错误。如果newkey已经存在,则值将被覆盖。
返回值
例子
redis> SET mykey "Hello"
OK
redis> RENAME mykey myotherkey
OK
redis> GET myotherkey
"Hello"
redis>
RENAMENX key newkey
当且仅当 newkey 不存在时,将 key 改名为 newkey 。
当 key 不存在时,返回一个错误。
返回值
- 修改成功时,返回 1 。
- 如果 newkey 已经存在,返回 0 。
例子
redis> SET mykey "Hello"
OK
redis> SET myotherkey "World"
OK
redis> RENAMENX mykey myotherkey
(integer) 0
redis> GET myotherkey
"World"
redis>
TYPE key
返回key
所存储的value
的数据结构类型,它可以返回string
, list
, set
, zset
和hash
等不同的类型。
返回值
simple-string-reply: 返回当前key
的数据类型,如果key
不存在时返回none
。
例子
redis> SET key1 "value"
OK
redis> LPUSH key2 "value"
(integer) 1
redis> SADD key3 "value"
(integer) 1
redis> TYPE key1
string
redis> TYPE key2
list
redis> TYPE key3
set
redis>