redis练习手册<七>Redis键

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


DUMP key

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 匹配 hellohallo 和 hxllo
  • h*llo 匹配 hllo 和 heeeello
  • h[ae]llo 匹配 hello 和 hallo, 但是不匹配 hillo
  • h[^e]llo 匹配 hallohbllo, … 但是不匹配 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)。

返回值

integer-reply:

  • 移动成功返回 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-replyTTL以毫秒为单位,或者返回一个错误值 (参考上面的描述).

例子

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 

从当前数据库返回一个随机的key。

返回值

bulk-string-reply:如果数据库没有任何key,返回nil,否则返回一个随机的key。






RENAME key newkey

将key重命名为newkey,如果key与newkey相同,将返回一个错误。如果newkey已经存在,则值将被覆盖。

返回值

simple-string-reply

例子

redis> SET mykey "Hello"
OK
redis> RENAME mykey myotherkey
OK
redis> GET myotherkey
"Hello"
redis> 


RENAMENX key newkey

当且仅当 newkey 不存在时,将 key 改名为 newkey 。

当 key 不存在时,返回一个错误。

返回值

integer-reply

  • 修改成功时,返回 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的数据结构类型,它可以返回stringlistsetzset 和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> 





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值