Redis之Redis键(key)

Redis 键命令用于管理 redis 的键。

语法

Redis 键命令的基本语法如下:

redis 127.0.0.1:6379> COMMAND KEY_NAME

实例

redis 127.0.0.1:6379> SET runoobkey redis
OK
redis 127.0.0.1:6379> DEL runoobkey
(integer) 1

在以上实例中 DEL 是一个命令, runoobkey 是一个键。 如果键被删除成功,命令执行后输出 (integer) 1,否则将输出 (integer) 0


Redis keys 命令

下表给出了与 Redis 键相关的基本命令:

 

序号命令及描述
1 DEL key
该命令用于在 key 存在时删除 key。
2 DUMP key
序列化给定 key ,并返回被序列化的值。
3 EXISTS key
检查给定 key 是否存在。
4 EXPIRE key seconds
为给定 key 设置过期时间,以秒计。
5 EXPIREAT key timestamp
EXPIREAT 的作用和 EXPIRE 类似,都用于为 key 设置过期时间。 不同在于 EXPIREAT 命令接受的时间参数是 UNIX 时间戳(unix timestamp)。
6 PEXPIRE key milliseconds
设置 key 的过期时间以毫秒计。
7 PEXPIREAT key milliseconds-timestamp
设置 key 过期时间的时间戳(unix timestamp) 以毫秒计
8 KEYS pattern
查找所有符合给定模式( pattern)的 key 。
9 MOVE key db
将当前数据库的 key 移动到给定的数据库 db 当中。
10 PERSIST key
移除 key 的过期时间,key 将持久保持。
11 PTTL key
以毫秒为单位返回 key 的剩余的过期时间。
12 TTL key
以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。
13 RANDOMKEY
从当前数据库中随机返回一个 key 。
14 RENAME key newkey
修改 key 的名称
15 RENAMENX key newkey
仅当 newkey 不存在时,将 key 改名为 newkey 。
16 TYPE key
返回 key 所储存的值的类型。

keys命令

keys * 
keys h*
keys *o*
keys hi?
keys h
keys h?

格式:keys pattern

功能:查找所有符合给定模式pattern的key,pattern为正则表达式。

说明:keys的速度非常快,但在一个大的数据库中使用它可能会阻塞当前服务器的服务,所以在生产环境中一般不使用该命令,而使用scan命令代替。

exists命令

exists hello

 格式:exists key

功能:检查给定的key是否存在

说明:如果存在,则返回1,否则返回0.

del命令

del hello

 格式:del key

功能:删除给定的一个key,或者多个key。不存在的key则会被忽略

说明:返回被删除key的数量

rename命令

rename hello hill

 格式:rename key key2

功能:将key改名为key2

说明:当key和key2的名称相同时,或者key不存在时,返回一个错误。当key2已经存在时,rename命令将覆盖旧值,改名成功后,提示ok,否则返回一个错误。

move命令

move hello 0

 格式:rename key db

功能:将当前数据库中的key移动到给懂的数据库db中

说明:如果当前数据库(sourcedb)和给定的数据库(distdb)有相同名字的ky,或者key不存在sourcedb中,那么move没有任何效果,移动成功返回1,失败返回0.

type命令

move hello 

 格式:rename key 

功能:返回key所存储的值得类型

说明:返回值有如下六种:
none(key不存在)

string(字符串)

list(列表)

set(集合)

zset(有序集合)

hash(哈希表)

expire命令和pexpire命令

expire heart 5

 格式:expire key seconds

功能:为给定的key设置生存时间。当key过期时(生存时间为0),它会被自动删除。expire的时间单位为秒,pexpire的时间单位为毫秒,在redis中,带有生存时间的key被称为易失的(volatile)。

说明:生存时间设置成功返回1,若key不存在时,返回0,rename操作不会改变key的生存时间。

ttl命令和pttl命令

ttl hell

 格式:ttl key

功能:ttl,time to live,返回给定key的剩余生存时间

说明:其返回值存在三种可能:
当key不存在时,返回-2;

当key存在但是没有设置剩余生存时间时,返回-1;

否则返回key的剩余生存时间,ttl命令返回的时间单位为秒,而pttl命令返回的时间单位为毫秒。

persist命令

persist hero

 格式:persist key

功能:去除给定key的生存时间,将这个key从易失的(volatile)转换成持久的

说明:当生存时间移除成功时,返回1,若key不存在或者key没有设置生存时间,则返回0

randomkey命令

randmkey

 格式:randmkey

功能:从当前数据库中随机返回(不删除)一个key

说明:当数据库不为空时,返回 一个key,当数据库为空时,返回nil

scan命令

scan 0 count 5 match *b*

 格式:scan coursor [match pattern] [count count] [type type]

功能:用于迭代数据库中的数据库键。其各个选项的意义为:

coursor:本次迭代开始的游标(从第几个开始遍历)

match:本次迭代要匹配的key的模式

count:本次迭代要从数据集中返回多少元素,默认为10个

type:本次迭代要返回的value的类型,默认为所有类型。

scan命令时一个基于游标cursor的迭代器,scan命令每次被调用之后,都会想用户返回一个包含两个元素的数组,第一个元素是用于进行下一次迭代的新游标,而第二个元素则是一个数组,这个数组包含了所有被迭代的元素,用户在下次迭代时需要使用这个新游标作为scan命令的游标参数,以此来延续之前的迭代过程,当scan命令的游标参数被设置为0时,服务器将开始新的迭代,如果新游标返回0,则表示迭代结束。

说明:使用间断的、负数、超出范围或者其他非正常的游标来执行增量式迭代不会造成服务器崩溃。

  当数据量很大时,count的数量的指定可能不起作用,redis回自动调整每次的遍历树木,由于scan命令每次执行都会返回少量元素,所以该命令可以用于生产环境,而不会出现keys命令带来的服务器阻塞问题。

  增量式迭代命令所使用的算法只保证在数据集的大小有界的情况下迭代才会停止,换句话说,如果被迭代数据集的大小不断地增长的话,增量式迭代命令可能永远也无法完成一次完整迭代。即当一个数据集不断地变大时,想要访问这个数据集中的所有元素就需要越来越多的工作,能否结束一个迭代取决于用户执行迭代的速度是否比数据集增长的速度更快。

相关命令:另外三个scan命令用于对三种类型的value进行遍历

hscan:属于hash类型value操作命令集合,用于遍历当前db中指定hash表的所有field-value对。

sscan:属于set类型value操作命令集合,用于遍历当前db中指定set集合的所有元素。

zscan:属于zset类型value操作命令集合,用于遍历当前db中指定有序集合的所有元素(数值与元素值)。

 

posted @ 2020-03-09 23:11  King-DA  阅读(227)  评论(0编辑  收藏  举报