1. 常用指令

1.1 key 基本操作

指令 作用
del key 删除指定key
exists key 获取key是否存在
type key 获取key的类型
expire key seconds
pexpire key milliseconds
expireat key timestamp
pexpireat key milliseconds-timestamp
为指定key设置有效期
ttl key
pttl key
获取key的有效时间
persist key 切换key从时效性转换为永久性
rename key newkey
renamenx key newkey
为key改名
sort 对所有key排序
help @generic 其他key通用操作
keys pattern 查询key

查询模式规则

* 匹配任意数量的任意符号 ? 配合一个任意符号 [] 匹配一个指定符

例子 解释
keys * 查询所有
keys it* 查询所有以it开头
keys *heima 查询所有以heima结尾
keys ??heima 查询所有前面两个字符任意,后面以heima结尾
keys user:? 查询所有以user:开头,最后一个字符任意
keys u[st]er:1 查询所有以u开头,以er:1结尾,中间包含一个字母,s或t

1.2数据库通用指令

指令 作用
select index 切换数据库
quit
ping
echo message
其他操作
move key db 数据移动
dbsize
flushdb
flushall
数据清除

2. 全部指令

2.1 String

操作指令 作用 注意事项 返回值
set key value 将字符串值 value 关联到 key 如果 key 已经持有其他值, SET 就覆写旧值, 无视类型
SET 命令对一个带有生存时间(TTL)的键进行设置之后, 该键原有的 TTL 将被清除
SET 命令只在设置操作成功完成时才返回 OK
setnx key value 只在键 key 不存在的情况下, 将键 key 的值设置为 value 若键 key 已经存在, 则 SETNX 命令不做任何动作 命令在设置成功时返回 1 , 设置失败时返回 0
setex key value 将键 key 的值设置为 value , 并将键 key 的生存时间设置为 seconds 秒钟 如果键 key 已经存在, 那么 SETEX 命令将覆盖已有的值 命令在设置成功时返回 OK
seconds 参数不合法时, 命令将返回一个错误
pestex key value 它以毫秒为单位设置 key 的生存时间 这个命令和 SETEX 命令相似, 但不是像 SETEX 命令那样以秒为单位进行设置 命令在设置成功时返回 OK
get key 返回与键 key 相关联的字符串值 如果键 key 不存在, 那么返回特殊值 nil ; 否则, 返回键 key 的值 与键 key 相关联的字符串值
getset key value 将键 key 的值设为 value , 并返回键 key 在被设置之前的旧值 如果键 key 没有旧值, 也即是说, 键 key 在被设置之前并不存在, 那么命令返回 nil 给定键 key 的旧值
strlen key 返回键 key 储存的字符串值的长度 当键 key 不存在时, 命令返回 0 字符串值的长度
append key value 如果键 key 已经存在并且它的值是一个字符串, APPEND 命令将把 value 追加到键 key 现有值的末尾 如果 key 不存在, APPEND 就简单地将键 key 的值设为 value , 就像执行 SET key value 一样 追加 value 之后, 键 key 的值的长度
setrange key offset value 从偏移量 offset 开始, 用 value 参数覆写(overwrite)键 key 储存的字符串值 不存在的键 key 当作空白字符串处理 被修改之后, 字符串值的长度
getrange key start end 返回键 key 储存的字符串值的指定部分, 字符串的截取范围由 startend 两个偏移量决定 (包括 startend 在内) 负数偏移量表示从字符串的末尾开始计数, -1 表示最后一个字符, -2 表示倒数第二个字符, 以此类推
GETRANGE 通过保证子字符串的值域(range)不超过实际字符串的值域来处理超出范围的值域请求
GETRANGE 命令会返回字符串值的指定部分
incr key 为键 key 储存的数字值加上一 如果键 key 不存在, 那么它的值会先被初始化为 0 , 然后再执行 INCR 命令 执行加一操作之后的值
incrby key increment 为键 key 储存的数字值加上增量 increment 如果键 key 不存在, 那么键 key 的值会先被初始化为 0 , 然后再执行 INCRBY 命令 在加上增量 increment 之后, 键 key 当前的值
incrbyfloat key increment 为键 key 储存的值加上浮点数增量 increment 如果键 key 不存在, 那么 INCRBYFLOAT 会先将键 key 的值设为 0 , 然后再执行加法操做 在加上增量 increment 之后, 键 key 的值
decr key 为键 key 储存的数字值减去一 如果键 key 不存在, 那么键 key 的值会先被初始化为 0 , 然后再执行 DECR 操作 执行减一操作之后的值
decrby key increment 将键 key 储存的整数值减去减量 decrement 如果键 key 不存在, 那么键 key 的值会先被初始化为 0 , 然后再执行 DECRBY 命令 执行减法操作之后的值
mset key1 value1 key2 value2 同时为多个键设置值 MSET 是一个原子性(atomic)操作,会覆盖已有value 总是返回 OK
msetnx key1 value1 key2 value2 当且仅当所有给定键都不存在时, 为所有给定键设置值 MSETNX 是一个原子性(atomic)操作, 所有给定键要么就全部都被设置, 要么就全部都不设置, 不可能出现第三种状态 成功 1
失败0
mget key1 key2 返回给定的一个或多个字符串键的值 如果给定的字符串键里面, 有某个键不存在, 那么这个键的值将以特殊值 nil 表示 一个列表, 列表中包含了所有给定键的值

tips:

  • get 只能获取字符串 其他类型的用get就会报错

  • 数字的加减只能用于数字 带有字符的字符串会报错

2.2 hash

操作指令 作用 注意事项 返回值
hset hash field value 将哈希表 hash 中域 field 的值设置为 value field不存在就创建field域并设置
存在就覆盖
新创建 field 域并成功为它设置值时, 命令返回 1
成功使用新值覆盖了它的旧值, 那么命令返回 0
hsetnx hash field value 当且仅当域 field 尚未存在于哈希表的情况下, 将它的值设置为 value 如果给定域已经存在于哈希表当中, 那么命令将放弃执行设置操作 设置成功时返回 1 , 在给定域已经存在而放弃执行设置操作时返回 0
hget hash field 返回哈希表中给定域的值 如果给定域不存在于哈希表中, 又或者给定的哈希表并不存在, 那么命令返回 nil HGET 命令在默认情况下返回给定域的值
hexists hash field 检查给定域 field 是否存在于哈希表 hash 当中 HEXISTS 命令在给定域存在时返回 1 , 在给定域不存在时返回 0
hdel key [field] 删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略 被成功移除的域的数量,不包括被忽略的域
hlen key 返回哈希表 key 中域的数量 key 不存在时,返回 0 哈希表中域的数量
hstrlen key field 返回哈希表 key 中, 与给定域 field 相关联的值的字符串长度(string length) 如果给定的键或者域不存在, 那么命令返回 0 一个整数
hincrby key field increment 为哈希表 key 中的域 field 的值加上增量 increment 如果 key 不存在,一个新的哈希表被创建并执行
如果域 field 不存在,那么在执行命令前,域的值被初始化为 0
执行命令之后,哈希表 key 中域 field 的值
hincrbyfloat key field increment 哈希表 key 中的域 field 加上浮点数增量 increment 同上 执行加法操作之后 field 域的值
hmset key [field value] 同时将多个 field-value (域-值)对设置到哈希表 key 此命令会覆盖哈希表中已存在的域
如果 key 不存在,一个空哈希表被创建并执行
如果命令执行成功,返回 OK
key 不是哈希表(hash)类型时,返回一个错误
hmget key [field] 返回哈希表 key 中,一个或多个给定域的值 如果给定的域不存在于哈希表,那么返回一个 nil 一个包含多个给定域的关联值的表,表值的排列顺序和给定域参数的请求顺序一样
hkeys key 返回哈希表 key 中的所有域 key 不存在时,返回一个空表 一个包含哈希表中所有域的表
hvals key 返回哈希表 key 中所有域的值 key 不存在时,返回一个空表 一个包含哈希表中所有值的表
hgetall key 返回哈希表 key 中,所有的域和值 key 不存在,返回空列表 以列表形式返回哈希表的域和域的值

2.3 list

操作指令 作用 注意事项 返回值
lpush key [value] 将一个或多个值 value 插入到列表 key 的表头 value 值按从左到右的顺序依次插入到表头
如果 key 不存在,一个空列表会被创建并执行
列表的长度
lpushx key value 将值 value 插入到列表 key 的表头,当且仅当 key 存在并且是一个列表 key 不存在时,什么也不做 命令执行之后,表的长度
rpush key [value] 将一个或多个值 value 插入到列表 key 的表尾(最右边) value 值按从左到右的顺序依次插入到表尾
如果 key 不存在,一个空列表会被创建并执行
命令执行之后,表的长度
rpushx key value 将值 value 插入到列表 key 的表尾,当且仅当 key 存在并且是一个列表 key 不存在时,什么也不做 命令执行之后,表的长度
lpop key 移除并返回列表 key 的头元素 key 不存在时,返回 nil 列表的头元素
rpop key 移除并返回列表 key 的尾元素 key 不存在时,返回 nil 列表的尾元素
rpoplpush source destination source 弹出的元素插入到列表 destination ,作为 destination 列表的的头元素 如果 source 不存在,值 nil 被返回,并且不执行其他动作 被弹出的元素
lrem key count value 根据参数 count 的值,移除列表中与参数 value 相等的元素 count > 0 : 从表头开始向表尾搜索,数量为 count
count = 0 : 移除表中所有与 value 相等的值
被移除元素的数量
llen key 返回列表 key 的长度 如果 key 不存在,则 key 被解释为一个空列表,返回 0 列表 key 的长度
lindex key index 返回列表 key 中,下标为 index 的元素 你也可以使用负数下标,以 -1 表示列表的最后一个元素
关于下表都可以试试负数
列表中下标为 index 的元素
如果 index 参数的值不在列表的区间范围内,返回 nil
linsert key before after pivot value 将值 value 插入到列表 key 当中,位于值 pivot 之前或之后 pivot 不存在于列表 key 或者不存在key,不执行任何操作
lset key index value 将列表 key 下标为 index 的元素的值设置为 value index 参数超出范围,或对一个空列表( key 不存在)进行时,返回一个错误 操作成功返回 ok ,否则返回错误信息
lrange key start stop 返回列表 key 中指定区间内的元素,区间以偏移量 startstop 指定 包含stop元素
如果 stop 下标比 end 下标还要大,Redis将 stop 的值设置为 end
包含指定区间内的元素
如果 start 大于list长度就返回空一个列表
ltrlm key start stop 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除 包含stop元素
如果 stop 下标比 end 下标还要大,Redis将 stop 的值设置为 end
包含指定区间内的元素
如果 start 大于list长度就返回空一个列表
blpop [key] timeout 当给定多个 key 参数时,按参数 key 的先后顺序依次检查各个列表,弹出第一个非空列表的头元素 如果列表为空,返回一个 nil 返回一个含有两个元素的列表,第一个元素是被弹出元素所属的 key ,第二个元素是被弹出元素的值
brpop [key] timeout 当给定多个 key 参数时,按参数 key 的先后顺序依次检查各个列表,弹出第一个非空列表的尾部元素。 假如在指定时间内没有任何元素被弹出,则返回一个 nil 和等待时长 返回一个含有两个元素的列表,第一个元素是被弹出元素所属的 key ,第二个元素是被弹出元素的值
brpoplpush source destination timeout 超时参数 timeout 接受一个以秒为单位的数字作为值。超时参数设为 0 表示阻塞时间可以无限期延长(block indefinitely) 假如在指定时间内没有任何元素被弹出,则返回一个 nil 和等待时长 反回一个含有两个元素的列表,第一个元素是被弹出元素的值,第二个元素是等待时长