- SET
用法:SET key value [EX seconds] [PX milliseconds] [NX|XX]
功能:
将字符串值value
关联到key
。
如果key
已经持有其他值, SET 就覆写旧值,无视类型。
对于某个原本带有生存时间(TTL)的键来说, 当 SET 命令成功在这个键上执行时, 这个键原有的 TTL 将被清除。
Redis 字符串的大小被限制在 512 兆(megabytes)以内。
可选参数:
从 Redis 2.6.12 版本开始, SET 命令的行为可以通过一系列参数来修改:
EX second :设置键的过期时间为 second 秒。 SET key value EX second 效果等同于 SETEX key second value 。
PX millisecond :设置键的过期时间为 millisecond 毫秒。 SET key value PX millisecond 效果等同于 PSETEX key millisecond value 。
NX :只在键不存在时,才对键进行设置操作。 SET key value NX 效果等同于 SETNX key value 。
XX :只在键已经存在时,才对键进行设置操作。
备注:
因为 SET 命令可以通过参数来实现和 SETNX 、 SETEX 和 PSETEX 三个命令的效果,所以将来的 Redis 版本可能会废弃并最终移除 SETNX 、 SETEX 和 PSETEX 这三个命令。
命令SET resource-name anystring NX EX max-lock-time
是一种在 Redis 中实现锁的简单方法。
返回值:
在 Redis 2.6.12 版本以前, SET 命令总是返回 OK 。
从 Redis 2.6.12 版本开始, SET 在设置操作成功完成时,才返回 OK 。
如果设置了 NX 或者 XX ,但因为条件没达到而造成设置操作未执行,那么命令返回空批量回复(NULL Bulk Reply)。 - SETEX
用法:SETEX key seconds value
可用版本:>=2.0.0
功能:
将值 value 关联到 key ,并将 key 的生存时间设为 seconds (以秒为单位)。
如果 key 已经存在, SETEX 命令将覆写旧值。
这个命令类似于以下两个命令:
SET key value
EXPIRE key seconds
不同之处是, SETEX 是一个原子性(atomic)操作,关联值和设置生存时间两个动作会在同一时间内完成,该命令在 Redis 用作缓存时,非常实用。
返回值:
设置成功时返回 OK 。
当 seconds 参数不合法时,返回一个错误。 - SETNX
用法:SETNX key value
可用版本:>=1.0.0
功能:
将 key 的值设为 value ,当且仅当 key 不存在。
若给定的 key 已经存在,则 SETNX 不做任何动作。
SETNX 是『SET if Not eXists』(如果不存在,则 SET)的简写。
返回值:
设置成功,返回 1 。
设置失败,返回 0 。 - SETRANGE
用法:SETRANGE key offset value
可用版本:>= 2.2.0
功能:
用 value 参数覆写(overwrite)给定 key 所储存的字符串值,从偏移量 offset 开始。
不存在的 key 当作空白字符串处理。
返回值:
被 SETRANGE 修改之后,字符串的长度。 - MSET
用法:MSET key value [key value ...]
可用版本:>=1.0.1
功能:
同时设置一个或多个 key-value 对。
如果某个给定 key 已经存在,那么 MSET 会用新值覆盖原来的旧值,如果这不是你所希望的效果,请考虑使用 MSETNX 命令:它只会在所有给定 key 都不存在的情况下进行设置操作。
MSET 是一个原子性(atomic)操作,所有给定 key 都会在同一时间内被设置,某些给定 key 被更新而另一些给定 key 没有改变的情况,不可能发生。
返回值:
总是返回 OK (因为 MSET 不可能失败)。 - MSETNX
用法:MSETNX key value [key value ...]
可用版本:>=1.0.1
功能:
同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。
即使只有一个给定 key 已存在, MSETNX 也会拒绝执行所有给定 key 的设置操作。
MSETNX 是原子性的,因此它可以用作设置多个不同 key 表示不同字段(field)的唯一性逻辑对象(unique logic object),所有字段要么全被设置,要么全不被设置。
返回值:
当所有 key 都成功设置,返回 1 。
如果所有给定 key 都设置失败(至少有一个 key 已经存在),那么返回 0 。 - GET
用法:GET key
可用版本:>=1.0.0
功能:
返回 key 所关联的字符串值。
如果 key 不存在那么返回特殊值 nil 。
假如 key 储存的值不是字符串类型,返回一个错误,因为 GET 只能用于处理字符串值。
返回值:
当 key 不存在时,返回 nil ,否则,返回 key 的值。
如果 key 不是字符串类型,那么返回一个错误。 - GETRANGE
用法:GETRANGE key start end
可用版本:>= 2.4.0
在 <= 2.0 的版本里,GETRANGE 被叫作 SUBSTR。
功能:
返回 key 中字符串值的子字符串,字符串的截取范围由 start 和 end 两个偏移量决定(包括 start 和 end 在内)。
负数偏移量表示从字符串最后开始计数, -1 表示最后一个字符, -2 表示倒数第二个,以此类推。
返回值:
截取得出的子字符串。
示例:
redis> SET greeting "hello, my friend"
OK
redis> GETRANGE greeting 0 4 # 返回索引0-4的字符,包括4。
"hello"
redis> GETRANGE greeting -1 -5 # 不支持回绕操作
""
redis> GETRANGE greeting -3 -1 # 负数索引
"end"
redis> GETRANGE greeting 0 -1 # 从第一个到最后一个
"hello, my friend"
redis> GETRANGE greeting 0 1008611 # 值域范围不超过实际字符串,超过部分自动被符略
"hello, my friend" - GETSET
用法:GETSET key value
可用版本:>=1.0.0
功能:
将给定 key 的值设为 value ,并返回 key 的旧值(old value)。
当 key 存在但不是字符串类型时,返回一个错误。
返回值:
返回给定 key 的旧值。
当 key 没有旧值时,也即是, key 不存在时,返回 nil 。 - MGET
用法:MGET key [key ...]
可用版本:>= 1.0.0
功能:
返回所有(一个或多个)给定 key 的值。
如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil 。因此,该命令永不失败。
返回值:
一个包含所有给定 key 的值的列表。 - APPEND
用法:APPEND key value
可用版本:>=2.0.0
功能:
如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。
如果 key 不存在, APPEND 就简单地将给定 key 设为 value ,就像执行 SET key value 一样。
返回值:追加 value 之后, key 中字符串的长度。 - STRLEN
用法:STRLEN
可用版本:>=2.2.0
功能:
返回 key 所储存的字符串值的长度。
当 key 储存的不是字符串值时,返回一个错误。
返回值:
字符串值的长度。
当 key 不存在时,返回 0 。 - INCR
用法:INCR key
可用版本:>=1.0.0
功能:
将 key 中储存的数字值增一。
如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。
如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
这是一个针对字符串的操作,因为 Redis 没有专用的整数类型,所以 key 内储存的字符串被解释为十进制 64 位有符号整数来执行 INCR 操作。
返回值:
执行 INCR 命令之后 key 的值。
扩展:
可以通过组合使用 INCR 和 EXPIRE ,来达到只在规定的生存时间内进行计数(counting)的目的。
客户端可以通过使用 GETSET 命令原子性地获取计数器的当前值并将计数器清零。 - INCRBY
用法:INCRBY key increment
可用版本:>=1.0.0
功能:
将 key 所储存的值加上增量 increment 。
如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCRBY 命令。
如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
返回值:
加上 increment 之后, key 的值。 - INCRBYFLOAT
用法:INCRBYFLOAT key increment
可用版本:>=2.6.0
功能:
为 key 中所储存的值加上浮点数增量 increment 。
如果 key 不存在,那么 INCRBYFLOAT 会先将 key 的值设为 0 ,再执行加法操作。
如果命令执行成功,那么 key 的值会被更新为(执行加法之后的)新值,并且新值会以字符串的形式返回给调用者。
无论加法计算所得的浮点数的实际精度有多长, INCRBYFLOAT 的计算结果也最多只能表示小数点的后十七位。
返回值:
执行命令之后 key 的值。 - DECR
用法:DECR key
可用版本:>=1.0.0
功能:
将 key 中储存的数字值减一。
如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECR 操作。
如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
返回值:
执行 DECR 命令之后 key 的值。 - DECRBY
用法:DECRBY key increment
可用版本:>=1.0.0
功能:
将 key 所储存的值减去减量 decrement 。
如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECRBY 操作。
返回值:
减去 decrement 之后, key 的值。
Redis命令操作之String
最新推荐文章于 2024-04-27 23:29:47 发布
本文详细介绍了Redis中各种键值操作命令,包括SET及其可选参数、SETEX、SETNX、SETRANGE、MSET、MSETNX等命令的用法及功能特性,帮助读者更好地理解和掌握Redis的基本操作。
摘要由CSDN通过智能技术生成