注:此文章为个人学习笔记,如有错误欢迎指出。
Redis
中存储的数据整体是一个
Map
,其
key
为
String
类型,而
value
则可以是
String
、
Hash
表、
List
、
Set
等类型。
1 keys
格式:
KEYS pattern
功能:查找所有符合给定模式
pattern
的
key
,
pattern
为正则表达式。
说明:
KEYS
的速度非常快,但在一个大的数据库中使用它可能会阻塞当前服务器的服
务。所以生产环境中一般不使用该命令,而使用
scan
命令代替。
![](https://i-blog.csdnimg.cn/blog_migrate/574630558cab9599394933cb923041e1.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d2dc0d7b5204b638e148f603c362d23b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d9cff13830d8e6e0e8db90944363cec3.png)
2 exists
格式:
EXISTS key
功能:检查给定
key
是否存在。
说明:若
key
存在,返回
1
,否则返回
0
。
![](https://i-blog.csdnimg.cn/blog_migrate/f2fe6f7889e4f8f7f8477dcefe1ce4bf.png)
3 del
格式:
DEL key [key ...]
功能:删除给定的一个或多个
key
。不存在的
key
会被忽略。
说明:返回被删除
key
的数量。
![](https://i-blog.csdnimg.cn/blog_migrate/761898a88c804d1f9852630cf05c2c09.png)
4 rename
格式:
RENAME key newkey
功能:将
key
改名为
newkey
。
说明:当
key
不存在时,返回一个错误。当
newkey
已经存在时, RENAME
命令将覆盖旧值。改名成功时提示
OK
,失败时候返回一个错误。
![](https://i-blog.csdnimg.cn/blog_migrate/b950f30e7b9380e00fcab42d077f569f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5729f37d9e178d2c32d808cbc9189e33.png)
5 move
格式:
MOVE key db
功能:将当前数据库的
key
移动到给定的数据库
db
当中。
说明:如果当前数据库
(
源数据库
)
和给定数据库
(
目标数据库
)
有相同名字的给定
key
,
或者
key
不存在于当前数据库,那么
MOVE
没有任何效果。移动成功返回
1
,失败
则返回 0 。
![](https://i-blog.csdnimg.cn/blog_migrate/d30330b65255d9ef093de2735332ffb2.png)
6 type
格式:
TYPE key
功能:返回
key
所储存的值的类型。
说明:返回值有以下六种
string (
字符串
)
list (
列表
)
set (
集合
)
zset (
有序集
)
hash (
哈希表
)
![](https://i-blog.csdnimg.cn/blog_migrate/d17670a1e3c61b9cb0764153741ce44f.png)
7 expire
与
pexpire
格式:
EXPIRE key seconds
功能:为给定
key
设置生存时间。当
key
过期时
(
生存时间为
0)
,它会被自动删除。
expire
的时间单位为秒,
pexpire
的时间单位为毫秒。在
Redis
中,带有生存时间的
key
被称为
“
易失的
”(volatile)
。
说明:生存时间设置成功返回
1
。若
key
不存在时返回
0
。
rename
操作不会改变
key
的生存时间。
![](https://i-blog.csdnimg.cn/blog_migrate/5334a636a66a6e5e9ce678e0d1f272f5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/67877b9e0359b5e32a6ca2d5d4cdb91c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c44d7230a4685a7a4f9c77c58b3b4531.png)
8 ttl
与
pttl
格式:
TTL key
功能:
TTL, time to live
,返回给定
key
的剩余生存时间。
说明:其返回值存在三种可能:
当
key
不存在时,返回
-2
。
当
key
存在但没有设置剩余生存时间时,返回
-1
。
否则,返回
key
的剩余生存时间。
ttl
命令返回的时间单位为秒,而
pttl
命令
返回的时间单位为毫秒。
![](https://i-blog.csdnimg.cn/blog_migrate/9b61f95b3ed4a88ae4c0494be337ea9b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6106b9e4390746c87fdd6dec1aa682dd.png)
9 persist
格式:
PERSIST key
功能:去除给定
key
的生存时间,将这个
key
从
“
易失的
”
转换成
“
持久的
”
。
说明:当生存时间移除成功时,返回
1
;若
key
不存在或
key
没有设置生存时间,则
返回
0
。
![](https://i-blog.csdnimg.cn/blog_migrate/d5f67a4e8bfb3894da4db805c6702417.png)
10 randomkey
格式:
RANDOMKEY
功能:从当前数据库中随机返回
(
不删除
)
一个
key
。
说明:当数据库不为空时,返回一个
key
。当数据库为空时,返回
nil
。主要是用于判断数据库是否为空。
![](https://i-blog.csdnimg.cn/blog_migrate/757f86d01d5d39cf6c0a423ea6036777.png)
![](https://i-blog.csdnimg.cn/blog_migrate/74ca3b4d1a14d910605fa4441dab21d7.png)
11 scan
格式:
SCAN cursor [MATCH pattern] [COUNT count] [TYPE type]
功能:用于迭代数据库中的数据库键。其各个选项的意义为:
cursor
:本次迭代开始的游标。
pattern
:本次迭代要匹配的
key
的模式。
count
:本次迭代要从数据集里返回多少元素,默认值为
10
。
type
:本次迭代要返回的
value
的类型,默认为所有类型。
SCAN
命令是一个基于游标
cursor
的迭代器:
SCAN
命令每次被调用之后,都会向用
户返回返回一个包含两个元素的数组, 第一个元素是用于进行下一次迭代的新游标,
而第二个元素则是一个数组, 这个数组中包含了所有被迭代的元素。用户在下次迭代
时需要使用这个新游标作为
SCAN
命令的游标参数,以此来延续之前的迭代过程。当
SCAN
命令的游标参数被设置为
0
时,服务器将开始一次新的迭代。如果新游标返回
0
表示迭代已结束。
说明:使用间断的、负数、超出范围或者其他非正常的游标来执行增量式迭代不会造成
服务器崩溃。
当数据量很大时,
count
的数量的指定可能会不起作用,
Redis
会自动调整每次的遍
历数目。由于
scan
命令每次执行都只会返回少量元素,所以该命令可以用于生产环境,
而不会出现像
KEYS
命令带来的服务器阻塞问题。
增量式迭代命令所使用的算法只保证在数据集的大小有界的情况下迭代才会停止,
换句话说,如果被迭代数据集的大小不断地增长的话,增量式迭代命令可能永远也无法
完成一次完整迭代。即当一个数据集不断地变大时,想要访问这个数据集中的所有元素
就需要做越来越多的工作, 能否结束一个迭代取决于用户执行迭代的速度是否比数据
集增长的速度更快。
相关命令:另外还有
3
个
scan
命令用于对三种类型的
value
进行遍历。
hscan
:属于
Hash
型
Value
操作命令集合,用于遍历当前
db
中指定
Hash
表的
所有
field-value
对。
sscan
:属于
Set
型
Value
操作命令集合,用于遍历当前
db
中指定
set
集合的所
有元素
zscan
:属于
ZSet
型
Value
操作命令集合,用于遍历当前
db
中指定有序集合的
所有元素(数值与元素值)
![](https://i-blog.csdnimg.cn/blog_migrate/2d7eb3855c0dfc4568d518a1d0d3a1cf.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f80d10b32abf1032555cbae990b3e997.png)
加入一个set类型的name
![](https://i-blog.csdnimg.cn/blog_migrate/17fca2bef13ae1abc6206d4706817634.png)