最近在研究Redis,根据官方文档抽取了些可能会忘的命令的摘要记下来,部分是自己的理解,具体内容以redis-doc为准。

SET key value/GET key

存取值的通用方法

DUMP key

序列化给定 key ,并返回被序列化的值,使用 RESTORE 命令可以将这个值反序列化为Redis 键。
序列化生成的值有以下几个特点:
1.它带有 64 位的校验和,用于检测错误, RESTORE 在进行反序列化之前会先检查校验和。
2.值的编码格式和 RDB 文件保持一致。
3.RDB 版本会被编码在序列化值当中,如果因为 Redis 的版本不同造成 RDB 格式不兼容,那么 Redis 会拒绝对这个值进行反序列化操作。

EXPIRE key time

1.为给定 key 设置生存时间,当 key 过期时(生存时间为 0 ),它会被自动删除。
2.在 Redis 中,带有生存时间的 key 被称为『易失的』(volatile)。
3.生存时间可以通过使用 DEL 命令来删除整个 key 来移除,或者被 SET 和 GETSET 命令覆写(overwrite),这意味着,如果一个命令只是修改(alter)一个带生存时间的 key 的值而不是用一个新的 key 值来代替(replace)它的话,那么生存时间不会被改变。如果使用 RENAME 对一个 key 进行改名,那么改名后的 key 的生存时间和改名前一样。RENAME 命令的另一种可能是,尝试将一个带生存时间的 key 改名成另一个带生存时间的another_key ,这时旧的 another_key (以及它的生存时间)会被删除,然后旧的 key 会改名为 another_key ,因此,新的 another_key 的生存时间也和原本的 key 一样。同时,对已有生存时间的key执行expire命令可以更新生存时间
4.所以若不过期 返回为-1 否则返回过期时间为剩余的秒时间值,可以使用ttl查询键的生存时间

EXPIREAT key timestamp

EXPIREAT 的作用和 EXPIRE 类似,都用于为 key 设置生存时间。
不同在于 EXPIREAT 命令接受的时间参数是 UNIX 时间戳(unix timestamp)。
如果生存时间设置成功,返回 1 。当 key 不存在或没办法设置生存时间,返回 0 。

MIGRATE host port key destination-db timeout [COPY] [REPLACE]

将 key 原子性地从当前实例传送到目标实例的指定数据库上,一旦传送成功, key 保证会出现在目标实例上,而当前实例上的 key 会被删除。
原理还是使用DUMP、RESTORE进行序列化和反序列化
由于这是一个原子操作,所以是阻塞执行。

MOVE key db

将当前数据库的 key 移动到给定的数据库 db 当中
如果当前数据库(源数据库)和给定数据库(目标数据库)有相同名字的给定 key ,或者 key 不存在于当前数据库,那么 MOVE 没有任何效果

OBJECT

OBJECT 命令允许从内部察看给定 key 的 Redis 对象。
-REFCOUNT 引用数目
-IDLETIME 空闲时间
-ENCODING 编码方式

PERSIST key

移除指定key的TTL,让它获得永生。

PEXPIRE key

与EXPIRE相同作用相同,只是以毫秒为时间单位

PEXPIREAT key

同PEXPIRE与EXPIRE的关系

PTTL key

TTL的毫秒版

RANDOMKEY

随机返回一个key,数据库为空时返回nil,抽奖程序知道怎么写了才不会被喷了吧?

RENAME key newkey

改名,
1.当 key 和 newkey 相同,或者 key 不存在时,返回一个错误。
2.当 newkey 已经存在时, RENAME 命令将覆盖旧值。

RENAMENX key new key

当且仅当 newkey 不存在时,将 key 改名为 newkey 。
当 key 不存在时,返回一个错误。

RESTORE key ttl serialized-value [REPLACE]

反序列化

SORT

SORT key 返回键值从小到大排序的结果。
SORT key DESC 返回键值从大到小排序的结果。
SORT {SET} ALPHA 按字符对set排序
LIMIT offset cout 结果集数量
SORT numbers STORE sorted-numbers 讲结果集保存在指定的键上

TYPE key

返回key的类型
none (key不存在) string (字符串) list (列表) set (集合) zset (有序集) hash (哈希表)

SCAN cursor [MATCH pattern] [COUNT count]
SCAN 命令及其相关的 SSCAN 命令、 HSCAN 命令和 ZSCAN 命令都用于增量地迭代(incrementally iterate)一集元素(a collection of elements):
SCAN 命令用于迭代当前数据库中的数据库键。
SSCAN 命令用于迭代集合键中的元素。
HSCAN 命令用于迭代哈希键中的键值对。
ZSCAN 命令用于迭代有序集合中的元素(包括元素成员和元素分值)。

SCAN 命令是一个基于游标的迭o代器(cursor based iterator): SCAN 命令每次被调用之后, 都会向用户返回一个新的游标, 用户在下次迭代时需要使用这个新游标作为 SCAN 命令的游标参数, 以此来延续之前的迭代过程。当 SCAN 命令的游标参数被设置为 0 时, 服务器将开始一次新的迭代, 而当服务器向用户返回值为 0 的游标时, 表示迭代已结束。
-COUNT 选项 调整一次迭代的数量
-MATCH 选项 scan {SET_NAME} {cursor} {RegularExpression}

APPEND key value

如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。如果 key 不存在, APPEND 就简单地将给定 key 设为 value ,就像执行SET key value 一样。

BITCOUNT key [start] [end]

计算给定字符串中,被设置为 1 的比特位的数量。
一般情况下,给定的整个字符串都会被进行计数,通过指定额外的 start 或 end 参数,可以让计数只在特定的位上进行。

GETRANGE key start end

返回 key 中字符串值的子字符串,字符串的截取范围由 start 和 end 两个偏移量决定(包括 start 和 end 在内)。

BITOP operation destkey key [key …]

对一个或多个保存二进制位的字符串 key 进行位元操作,并将结果保存到 destkey 上。

DECR key

将 key 中储存的数字值减一。
1.如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECR 操作。
2.如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
3.本操作的值限制在 64 位(bit)有符号数字表示之内。

DECRBY key decrement

DECR减去指定数值的版本

GETBIT key offset

对 key 所储存的字符串值,获取指定偏移量上的位(bit)。

GETSET key value

1.将给定 key 的值设为 value ,并返回 key 的旧值(old value)。
2.当 key 存在但不是字符串类型时,返回一个错误。
3.与INCR key联用可以做计数器~

INCR key

将 key 中储存的数字值增一。

INCRBYFLOAT key increment

为 key 中所储存的值加上浮点数增量 increment 。

MGET key [key …]

返回所有(一个或多个)给定 key 的值。

MSET key value [key value …]

同时设置一个或多个 key-value 对。

MSETNX key value [key value …]

同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。

PSETEX key milliseconds value

这个命令和 SETEX 命令相似,但它以毫秒为单位设置 key 的生存时间,而不是像 SETEX命令那样,以秒为单位。

SET key value [EX seconds] [PX milliseconds] [NX|XX]

1.将字符串值 value 关联到 key 。
2.如果 key 已经持有其他值, SET 就覆写旧值,无视类型。
3.对于某个原本带有生存时间(TTL)的键来说, 当 SET 命令成功在这个键上执行时, 这个键原有的 TTL 将被清除。

SETEX key seconds value

1.将值 value 关联到 key ,并将 key 的生存时间设为 seconds (以秒为单位)。
2如果 key 已经存在, SETEX 命令将覆写旧值。
3.这个命令类似于以下两个命令:
SET key value
EXPIRE key seconds 设置生存时间

SETNX key value

1.将 key 的值设为 value ,当且仅当 key 不存在。
2.若给定的 key 已经存在,则 SETNX 不做任何动作。
3.SETNX 是『SET if Not eXists』(如果不存在,则 SET)的简写。

SETRANGE key offset value

用 value 参数覆写(overwrite)给定 key 所储存的字符串值,从偏移量 offset 开始。
不存在的 key 当作空白字符串处理。

STRLEN key

返回 key 所储存的字符串值的长度。
当 key 储存的不是字符串值时,返回一个错误。