1.del key [key key …]
- 删除给定的一个或者多个key,不存在的key会被忽略
- 返回值:被删除key的数量
2.exists key
- 检查给定的key是否存在
- 返回值:如果key存在,返回1.否则返回0
3.expire key seconds
- 给指定的key设置或者更新生存时间,当key过期时(生存时间为0),他会被自动删除
- 返回值:设置成功返回1,当key不存在或者不能为key设置生存时间时,返回0
- persist 命令可以在不删除 key 的情况下,移除 key 的生存时间,让 key 重新成为一个『持久化』(persistent) key
- 对key进行更新或者覆盖(set,getset)都不会更改或者删除生存时间,对key执行incr, LPUSH ,HSET命令都不会改变key本身的生存时间(后面版本set操作会剔除key的生存时间)
4.expireat key timestamp
- EXPIREAT 的作用和 EXPIRE 类似,都用于为 key 设置生存时间,不同于的是 EXPIREAT 命令接受的时间参数是 UNIX 时间戳(unix timestamp)。
- 返回值:成功返回1 ,当 key 不存在或没办法设置生存时间,返回 0
5.pexpire key milliseconds
- 这个命令和 EXPIRE 命令的作用类似,但是它以毫秒为单位设置 key 的生存时间,而不像 EXPIRE 命令那样,以秒为单位
- 返回值:设置成功,返回 1;key 不存在或设置失败,返回 0
6.persist key
- 移除给定 key 的生存时间,将这个 key 从『可挥发』的(带生存时间 key )转换成『持久化』的(一个不带生存时间、永不过期的 key )。
- 返回值:当生存时间移除成功时,返回 1;如果 key 不存在或 key 没有设置生存时间,返回 0
7.keys pattern
- 查找所有符合给定模式pattern的key
- 返回值:符合给定模式的key列表
- keys * : 匹配数据库中所有的key
- keys h?llo: 匹配 hello , hallo 和 hxllo 等
- keys h*llo: 匹配 hllo 和 heeeeello 等
- keys h[ae]llo:匹配 hello 和 hallo ,但不匹配 hillo
- 特殊符号用 \ 隔开
8.migrate host port key destination-db timeout
- 在一定时间内,将key原子性的从当前实例传送到目标是里的指定数据库中,一旦传送成功,key保证会出现在目标实例上,而当前实例的key会被删除
- 返回值:迁移成功时返回ok,否则返回响应错误
- 过程:他将当前实例对指定的key执行dump(序列化)命令,然后传送到目标实例,目标实例再使用restore(反序列化)命令,并将反序列化所得到的数据添加到指定数据库中;当前实例就像目标实例的客户端那样,只要看到 RESTORE 命令返回 OK ,它就会调用 DEL 删除自己数据库上的 key
- timeout 参数以毫秒为格式,指定当前实例和目标实例进行沟通的最大间隔时间。这说明操作并不一定要在 timeout 毫秒内完成,只是说数据传送的时间不能超过这个 timeout 数
- 错误:如果在传送数据时发生 IO 错误,或者达到了超时时间,那么命令会停止执行,并返回一个特殊的错误: IOERR
- key 可能存在于两个实例
- key 可能只存在于当前实例
- 唯一不可能发生的情况就是丢失 key ,因此,如果一个客户端执行 MIGRATE 命令,并且不幸遇上 IOERR 错误,那么这个客户端唯一要做的就是检查自己数据库上的 key 是否已经被正确地删除
9.move key db
- 将当前数据库的 key 移动到给定的数据库 db 当中
- 返回值 :移动成功返回 1 ,失败则返回 0
- 如果当前数据库(源数据库)和给定数据库(目标数据库)有相同名字的给定 key ,或者 key 不存在于当前数据库,那么 MOVE 没有任何效果。
- 因此,也可以利用这一特性,将 MOVE 当作锁(locking)原语(primitive)。
10.object subcommand [arguments [arguments]]
- object命令允许从内部查看给定key的redis对象
- 返回值:refcount 和 idletime 返回数字; encoding 返回相应的编码类型
- 子命令:
- object refcount 返回给定 key 引用所储存的值的次数。此命令主要用于除错
- object idletime 返回给定 key 自储存以来的空转时间(idle, 没有被读取也没有被写入),以秒为单位
- object encoding 返回给定 key 锁储存的值所使用的内部表示(representation)。
- 对象的多种方式编码:
- 字符串可以被编码为 raw (一般字符串)或 int (用字符串表示64位数字是为了节约空间)。
- 列表可以被编码为 ziplist 或 linkedlist 。 ziplist 是为节约大小较小的列表空间而作的特殊表示
- 集合可以被编码为 intset 或者 hashtable 。 intset 是只储存数字的小集合的特殊表示
- 哈希表可以编码为 zipmap 或者 hashtable 。 zipmap 是小哈希表的特殊表示
- 有序集合可以被编码为 ziplist 或者 skiplist 格式。 ziplist 用于表示小的有序集合,而 skiplist 则用于表示任何大小的有序集合
11.pexpireat key milliseconds timestamp
- 这个命令和 EXPIREAT 命令类似,但它以毫秒为单位设置 key 的过期 unix 时间戳,而不是像 EXPIREAT 那样,以秒为单位。
- 返回值:如果生存时间设置成功,返回 1 ;当 key 不存在或没办法设置生存时间时,返回 0
12.ttl key
- 以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。
- 返回值:当 key 不存在或没有设置生存时间时,返回 -1 否则,返回 key 的剩余生存时间(以秒为单位)。
13.pttl key
- 这个命令类似于 TTL 命令,但它以毫秒为单位返回 key 的剩余生存时间,而不是像 TTL 命令那样,以秒为单位
- 返回值:如果 key 不存在,返回 -1 。否则,返回以毫秒为单位表示的 key 的剩余生存时间
14.randomkey
- 从当前数据库中随机返回(不删除)一个key
- 返回值:当数据库不为空时,返回一个 key 。当数据库为空时,返回 nil 。
15.rename key newkey
- 将 key 改名为 newkey (相当于改名字)
- 返回值:改名成功时提示 OK ,失败时候返回一个错误
- 当 key 和 newkey 相同,或者 key 不存在时,返回一个错误
- 当 newkey 已经存在时, rename 命令将覆盖旧值
- SET pc “lenovo”
- SET personal_computer “dell”
- rename pc personal_computer
- GET pc :(nil)
- GET personal_computer : “lenovo” (原来的值 dell 被覆盖了
)
16.renamenx key newkey
- 当且仅当 newkey 不存在时,将 key 改名为 newkey ;当 key 不存在时,返回一个错误
- 返回值:修改成功时,返回 1 ;如果 newkey 已经存在,返回 0
17.restore key ttl serialized-value
- 反序列化给定的序列化值,并将它和给定的 key 关联
- 参数 ttl 以毫秒为单位为 key 设置生存时间;如果 ttl 为 0 ,那么不设置生存时间
- 返回值:如果反序列化成功那么返回 OK ,否则返回一个错误
- 在执行反序列化之前会先对序列化值的 RDB 版本和数据校验和进行检查,如果 RDB 版本不相同或者数据不完整的话,那么 RESTORE 会拒绝进行反序列化,并返回一个错误
18.dump key
- 序列化给定 key ,并返回被序列化的值,使用 RESTORE 命令可以将这个值反序列化为 Redis 键
- 返回值:如果 key 不存在,那么返回 nil ;否则,返回序列化之后的值
- 序列化生成的值有以下几个特点
- 它带有 64 位的校验和,用于检测错误, RESTORE 在进行反序列化之前会先检查校验和
- 值的编码格式和 RDB 文件保持一致
- RDB 版本会被编码在序列化值当中,如果因为 Redis 的版本不同造成 RDB 格式不兼容,那么 Redis 会拒绝对这个值进行反序列化操作。
- 序列化的值不包括任何生存时间信息
19.sort key [by pattern] [limit offset count] [get pattern [get pattern …]] [asc | desc] [alpha] [store destination]
- 返回或保存给定列表、集合、有序集合 key 中经过排序的元素
- 返回值:没有使用 STORE 参数,返回列表形式的排序结果;使用 STORE 参数,返回排序结果的元素数量。
- 排序默认以数字作为对象,值被解释为双精度浮点数,然后进行比较