Redis(二) 指令操作
1. 常用指令
1.1 key 基本操作
| 指令 | 作用 |
|---|---|
del key |
删除指定key |
exists key |
获取key是否存在 |
type key |
获取key的类型 |
expire key secondspexpire key millisecondsexpireat key timestamppexpireat key milliseconds-timestamp |
为指定key设置有效期 |
ttl keypttl key |
获取key的有效时间 |
persist key |
切换key从时效性转换为永久性 |
rename key newkeyrenamenx 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 |
切换数据库 |
quitpingecho message |
其他操作 |
move key db |
数据移动 |
dbsizeflushdbflushall |
数据清除 |
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 储存的字符串值的指定部分, 字符串的截取范围由 start 和 end 两个偏移量决定 (包括 start 和 end 在内) |
负数偏移量表示从字符串的末尾开始计数, -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 : 从表头开始向表尾搜索,数量为 countcount = 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 中指定区间内的元素,区间以偏移量 start 和 stop 指定 |
包含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 和等待时长 |
反回一个含有两个元素的列表,第一个元素是被弹出元素的值,第二个元素是等待时长 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 风静水易寒!

