目录
2.1.1 SET key value [EX seconds] [PX milliseconds] [NX|XX]
2.1.2 MSET key value [key value ...]
2.1.4 PSETEX key milliseconds value
2.3.5 INCRBYFLOAT key increment
2.4.3 BITCOUNT key [start] [end]
2.4.4 BITOP operation destkey key [key ...]
1 基本特性
- 最大长度:在 Redis 5.0 及之后的版本中,单个字符串的最大长度是 512MB。
- 内存优化:对于小的整数和短字符串,Redis 使用内部缓存来减少内存占用。
- 编码方式:根据存储内容的不同,Redis 会自动选择合适的编码方式,比如 int、embstr 或 raw。
2 主要操作命令
2.1 设置键值
2.1.1 SET key value [EX seconds] [PX milliseconds] [NX|XX]
设置键的值。可选参数可以用来设置过期时间或仅在特定条件下设置。
127.0.0.1:6379> set name java
OK
2.1.2 MSET key value [key value ...]
同时设置多个键值对。
127.0.0.1:6379> mset name java1 name1 java2
OK
127.0.0.1:6379> get name
"java1"
127.0.0.1:6379> get name1
"java2"
2.1.3 SETEX key seconds value
设置键值的同时设置过期时间(以秒为单位)。例子设置过期时间为5秒。
127.0.0.1:6379> setex name 5 jdk
OK
127.0.0.1:6379> get name
"jdk"
127.0.0.1:6379> get name
(nil)
2.1.4 PSETEX key milliseconds value
设置键值的同时设置过期时间(以毫秒为单位)。例子设置过期时间为3000毫秒。
127.0.0.1:6379> psetex name 3000 jdk
OK
127.0.0.1:6379> get name
"jdk"
127.0.0.1:6379> get name
(nil)
2.1.5 APPEND key value
如果键已经存在,则将值追加到现有值后面;如果不存在,则创建新的键值对。
127.0.0.1:6379> set name jdk
OK
127.0.0.1:6379> get name
"jdk"
127.0.0.1:6379> append name 1.8
(integer) 6
127.0.0.1:6379> get name
"jdk1.8"
2.2 获取键值
2.2.1 GET key
获取指定键的值。
127.0.0.1:6379> get name
"jdk1.8"
2.2.2 MGET key [key ...]
同时获取多个键的值。
127.0.0.1:6379> mget name name1
1) "jdk1.8"
2) "java2"
2.2.3 GETRANGE key start end
获取字符串的一部分。
127.0.0.1:6379> get name
"jdk1.8"
127.0.0.1:6379> getrange name 0 3
"jdk1"
2.2.4 STRLEN key
返回字符串的长度。
127.0.0.1:6379> get name
"jdk1.8"
127.0.0.1:6379> strlen name
(integer) 6
2.3 更新操作
2.3.1 INCR key
将键的值增加1,如果键不存在则初始化为0。
127.0.0.1:6379> set number 3
OK
127.0.0.1:6379> incr number
(integer) 4
127.0.0.1:6379> get number
"4"
2.3.2 DECR key
将键的值减少1,如果键不存在则初始化为0。
127.0.0.1:6379> get number
"4"
127.0.0.1:6379> decr number
(integer) 3
127.0.0.1:6379> get number
"3"
2.3.3 INCRBY key increment
将键的值增加指定的整数。
127.0.0.1:6379> get number
"3"
127.0.0.1:6379> incrby number 5
(integer) 8
127.0.0.1:6379> get number
"8"
2.3.4 DECRBY key decrement
将键的值减少指定的整数。
127.0.0.1:6379> get number
"8"
127.0.0.1:6379> decrby number 2
(integer) 6
127.0.0.1:6379> get number
"6"
2.3.5 INCRBYFLOAT key increment
将键的值增加指定的浮点数。
127.0.0.1:6379> get number
"6"
127.0.0.1:6379> incrbyfloat number 0.5
"6.5"
127.0.0.1:6379> get number
"6.5"
2.4 位操作
2.4.1 SETBIT key offset value
设置或清除指定位置的位。
127.0.0.1:6379> set name jdk
OK
127.0.0.1:6379> get name
"jdk"
# 将第 0 位设置为 1
127.0.0.1:6379> setbit name 0 1
(integer) 0
# 将第 3 位设置为 1
127.0.0.1:6379> setbit name 3 1
(integer) 0
127.0.0.1:6379> get name
"\xfadk"
2.4.2 GETBIT key offset
获取指定位置的位。
127.0.0.1:6379> getbit name 0
(integer) 1
2.4.3 BITCOUNT key [start] [end]
计算给定范围内设置为1的位的数量。
127.0.0.1:6379> bitcount name 0 1
(integer) 9
127.0.0.1:6379> bitcount name
(integer) 14
2.4.4 BITOP operation destkey key [key ...]
对一个或多个字符串进行位运算,并将结果保存在另一个键中。
# 设置一些示例键
127.0.0.1:6379> SET key1 "\x01\x02\x03" # 二进制表示为 00000001 00000010 00000011
OK
127.0.0.1:6379> SET key2 "\x04\x05\x06" # 二进制表示为 00000100 00000101 00000110
# 执行 AND 操作
127.0.0.1:6379> BITOP AND result_key1 key1 key2
(integer) 3 # 结果长度为 3 字节
127.0.0.1:6379> GET result_key1
"\x00\x00\x02" # 二进制表示为 00000000 00000000 00000010
# 执行 OR 操作
127.0.0.1:6379> BITOP OR result_key2 key1 key2
(integer) 3 # 结果长度为 3 字节
127.0.0.1:6379> GET result_key2
"\x05\x07\x07" # 二进制表示为 00000101 00000111 00000111
# 执行 XOR 操作
127.0.0.1:6379> BITOP XOR result_key3 key1 key2
(integer) 3 # 结果长度为 3 字节
127.0.0.1:6379> GET result_key3
"\x05\x07\x05" # 二进制表示为 00000101 00000111 00000101
# 执行 NOT 操作
127.0.0.1:6379> BITOP NOT result_key4 key1
(integer) 3 # 结果长度为 3 字节
127.0.0.1:6379> GET result_key4
"\xff\xfd\xfc" # 二进制表示为 11111111 11111101 11111100
2.5 其他
2.5.1 SETNX key value
只有当键不存在时才设置键的值。
127.0.0.1:6379> get name
"\xfadk"
127.0.0.1:6379> setnx name jdk
(integer) 0
127.0.0.1:6379> get name
"\xfadk"
2.5.2 GETSET key value
设置新值并返回旧值。
127.0.0.1:6379> get name
"\xfadk"
127.0.0.1:6379> getset name jdk
"\xfadk"
127.0.0.1:6379> get name
"jdk"
2.5.3 GETDEL key
获取键的值并删除该键(Redis 6.2+)。
更多命令请参考:Commands | Docs