首页 > 代码库 > Key操作命令

Key操作命令

DEL key [key ...]
定义:用于删除已存在的key,不存在的key会被忽略;
可用版本:>=1.0.0
返回值:被删除的key的数量
 
DUMP key
定义:序列化给定的key,并返回被序列化的值; 使用 RESTORE 命令可以将该值反序列化为 Redis键
(注:序列化的值不包含任何生存时间信息!)
可用版本:>=2.6.0
返回值:如果Key存在,则返回序列化后的值;否则返回 nil
 
RESTORE key ttl serialized-value [REPLACE]
定义:反序列化给定的序列化值,并将它与给定的key关联;
—— 参数 ttl 以毫秒为单位为key设置生存时间;如果 ttl 为0,则说明永不过期
(注:RESTORE在执行反序列化之前会对序列化值的RDB版本进行数据校验和检查,如果RDB版本不同或数据不完整时,RESTORE会拒绝进行反序列化,并返回一个错误)
可用版本:>=2.6.0
返回值:反序列化成功返回OK,否则返回错误信息
 
EXISTS key [key ...]
定义:判断key是否存在
可用版本:>=1.0.0
返回值:如果key存在,返回1;否则返回0;
 
EXPIRE key seconds
定义:设置key的过期时间为seconds秒,超过过期时间将自动删除该key;使用 PERSIST 命令可以清除超时,使其变成一个永久的key
(注:从概念上讲所有改变key的值的操作都会使得过期时间被清除)
可用版本:>=1.0.0
返回值:如果设置成功则返回1;如果key不存在或设置失败则返回0
 
PERSIST key
定义:移除给定key的生存时间(将原本带有生存时间的key变成永不过期的key)
可用版本:>=2.2.0
返回值:移除成功返回1;key不存在或key没有设置生存时间返回0
 
PEXPIRE key milliseconds
定义:与EXPIRE作用类似,区别在于EXPIRE是以秒为单位,而PEXPIRE是以毫秒为单位设置key的生存时间;
可用版本:>=2.6.0
返回值:设置成功返回1;key不存在或设置失败返回0
 
EXPIREAT key timestamp
定义:作用类似EXPIRE,用于设置key的生存时间(过期时间);区别在于接受的参数timestamp为UNIX时间戳
可用版本:>=1.2.0
返回值:如果设置成功则返回1;如果key不存在或设置失败则返回0
 
PEXPIREAT key milliseconds-timestamp
定义:与EXPIREAT作用类似,区别在于EXPIREAT是以秒为单位的UNIX时间戳,而PEXPIREAT是以毫秒为单位的UNIX时间戳来设置生存时间;
可用版本:>=2.6.0
返回值:设置成功返回1;key不存在或设置失败返回0
 
KEYS pattren
定义:查找所有符合给定模式pattern(正则表达式)的key
支持的正则表达式模式:
  • h?llo 匹配 hello,hallo,hxllo等 ,即 ? 匹配单个字符
  • h*llo 匹配 hllo,heeeello等,即 * 匹配零个或多个字符
  • h[ae]llo 仅匹配 hello 和 hallo,即 [xyz] 仅匹配大括号内指定的字符
  • h[^e]llo 匹配 hallo,hbllo等,但不匹配 hello,即 [^x] 匹配除x之外的其他单个字符
  • h[a-b]llo 匹配 hallo 和 hbllo,即 [x - y] 仅匹配 x 到 y 范围内的单个字符
可用版本:>=1.0.0
返回值:所有符合条件的key
 
MIGRATE host port key|"" destination-db timeout [COPY] [REPLACE] [KEYS key [key ...]]
定义:将key原子性的从当前实例传送到目标实例的指定数据库上,一旦传送成功,key保证会出现在目标实例上,而当前实例上的key被删除
(内部实现:在当前实例对给定的key执行DUMP命令,将它序列化,然后传送到目标实例,目标实例再使用RESTORE命令对数据进行反序列化,并将反序列化后的数据添加到数据库中;当前实例只要收到RESTORE命令返回的OK,则调用DEL删除自身数据库上对应的key)
参数说明:timeout —— 以毫秒为格式,指定当前实例与目标实例进行沟通的最大间隔时间;即数据传送的时间不能超过timeout值
COPY —— 迁移成功后不移除当前实例的key
REPLACE —— 覆盖目标实例上存在的key
KEYS —— 如果key参数为空字符串,则该命令会使用KEYS参数后面的key来进行迁移
可用版本:>=2.6.0
返回值:成功迁移则返回“OK”,如果当前实例上不存在可操作的keys,则返回“NOKEY”
 
MOVE key db
定义:将当前的数据库key移动到给定的数据库db中(如果当前数据库和目标数据库有同名的key,或key不存在当前数据库,则MOVE没任何效果,利用此特性可以将MOVE当做锁原语??)
可用版本:>=1.0.0
返回值:移动成功返回1;失败返回0;
 
OBJECT
  • OBJECT REFCOUNT => 该命令用于调试,返回指定key所对应value被引用的次数
  • OBJECT ENCODING => 该命令返回指定key对应value所使用的的编码方式(数据压缩方式)
  • OBJECT IDLETIME => 该命令返回指定key对应的value自被存储之后空闲的时间(没有读写操作的请求),以10秒为一个单位;此命令可用于决定应用层的key的驱逐策略。
对象的编码方式:
  1. 字符串 => raw(常规字符串) 或 int(用字符串表示64位无符号整数,节省空间)
  2. 列表类型 => ziplist 或 linkedlist。ziplist 是为了节省较小的列表空间而设计的一种特殊编码方式
  3. 集合 => intset 或 hashtable。intset 是为了存储数字的较小集合而设计的一种特殊编码方式
  4. 哈希表 => zipmap 或 hashtable。zipmap 是专为较小集合而设计的一种特殊编码方式
  5. 有序集合 => ziplist 或 skiplist。ziplist 可以表示较小的有序集合,skiplist 表示任意大小的有序集合
(一旦做了一个操作让redis无法使用那些节省空间的编码方式,它将自动把那些特殊编码方式转换成普通编码方式)
可用版本:>=2.2.3
返回值:REFCOUNT 和 IDLETIME 子命令返回整数; ENCODING 返回编码方式;如果尝试检查的参数不存在,则返回空
例子:
redis> set foo 1000
OK
redis> object encoding foo
"int"
redis> append foo bar
(integer) 7
redis> get foo
"1000bar"
redis> object encoding foo
"raw"
 
TTL key
定义:返回key的剩余生存时间;
可用版本:>=1.0.0
返回值:key的剩余生存时间(秒)
1. version <=2.6.0 ,如果key不存在或key存在但已过期则返回-1
2. version >= 2.8.0,如果key不存在返回-2,如果key存在但已过期返回-1
 
PTTL key
定义:与TTL命令类似,但它以毫秒为单位返回key的剩余生存时间,而TTL以秒为单位;
可用版本:>=2.6.0
返回值:key的剩余生存时间(毫秒)
1. version <=2.6.0 ,如果key不存在或key存在但已过期则返回-1
2. version >= 2.8.0,如果key不存在返回-2,如果key存在但已过期返回-1
 
RANDOMKEY
定义:从当前数据库返回一个随机key
可用版本:>=1.0.0
返回值:如果数据库没有任何key,则返回nil;否则返回一个随机的key
 
RENAME key newkey
定义:将key重命名为newkey;
(如果key不存在则返回一个错误信息;如果newkey已存在则覆盖原值;3.2.0版本之前如果key与newkwy相同则返回一个错误信息)
可用版本:>=1.0.0
 
RENAMENX key newkey
定义:当且仅当newkey不存在时,将可以改名为newkey; 当key不存在时,返回错误信息;
可用版本:>=1.0.0
返回值:修改成功返回1;如果newkey已存在返回0;
 
SCAN cursor [MATCH pattern] [COUNT count]
定义:用于增量迭代一个集合元素;
  • SCAN => 用于迭代当前数据库中的key集合
  • SSCAN => 用于迭代SET集合中的元素
  • HSCAN => 用于迭代Hash类型中的键值对
  • ZSCAN => 用于迭代SortedSet集合中的元素和元素对应的分数值
(SCAN命令不需要在第一个参数提供任何key,因为它迭代的是当前数据库中的所有key)
可用版本:>=2.8.0
 
SORT key [BY pattern] [LIMIT offset count] [GET pattern] [ASC | DESC] [ALPHA] destination
 
TYPE key
定义:返回key所存储的value的数据结构类型;可返回String/List/Set/ZSet和Hash等不同类型;
可用版本:>=1.0.0
返回值:返回当前key的数据类型;如果key不存在则返回none
 
WAIT numslaves timeout
 
 (如有不对之处,欢迎拍砖指正!)

Key操作命令