Redis作为高性能内存数据库,其String类型是最基础也最常用的数据结构。无论你使用Python、Java还是Go开发,掌握String类型的操作指令都能显著提升缓存和计数器等场景的开发效率。本文将深入讲解15个核心指令,助你快速上手。
1. String类型基础介绍
String是Redis中最简单的数据类型,但它的重要性不容小觑。所有Redis键本身就是字符串,而List、Set、Hash等复杂类型底层也依赖String存储元素。类似于C++或Java中的String类,Redis的String可以存储文本、数字甚至二进制数据(如图片序列化结果)。其核心优势在于灵活性与极致性能——单指令操作通常在微秒级完成,适合高并发场景。
2. 核心设置与获取指令
2.1 SET指令
SET用于设置键值对,产生的值类型为String。语法如下:
set key value
执行示例:

注意:SET是基础指令,所有后续扩展指令都基于它。
2.2 SET + NX/XX(防覆盖)
实际开发中,避免数据覆盖至关重要。NX和XX选项提供了原子性控制:
- NX:仅在键不存在时设置,防止覆盖已有数据。语法:
。示例:set key value nx

✅ 从图中可见,key2已存在时再次SET返回nil。
- XX:仅在键存在时设置,用于更新已有数据。语法:
。示例:set key value xx

⚠️ 若键不存在,XX选项会忽略操作,避免误创建。
2.3 SET + EX/PX(设置过期时间)
Redis支持在设置键值对时直接指定过期时间,无需额外调用EXPIRE:
- EX seconds:以秒为单位。语法:
。示例:set key value ex 要设置的秒数

- PX milliseconds:以毫秒为单位。语法:
。示例:set key value px 要设置的毫秒数

这对缓存场景非常实用,例如设置验证码5分钟过期。
3. 批量操作与数字运算
3.1 MGET/MSET(批量操作)
MGET一次性获取多个键的值,MSET一次性设置多个键值对:
语法(MGET):
mget 要查询的key值。示例:
语法(MSET):
mset 键值对 键值对......。示例:
⚠️ 重要提示:Redis是单线程模型,批量操作上万键值对会阻塞其他请求,需谨慎控制数量。
3.2 INCR/DECR(原子自增自减)
INCR将键对应的数字加1,DECR减1。若键不存在,则视为0:
语法(INCR):
incr key。示例:
但若值为非整数(如浮点数或字符串),会报错:

语法(DECR):
decr key。示例:
同样,大数值或非整数会失败:

3.3 INCRBY/DECRBY(指定步长)
INCRBY和DECRBY允许自定义增减值:
语法(INCRBY):
incrby key 要增加的值。示例:
⚠️ 超出64位有符号整型范围会报错:

✅ 当键不存在时,INCRBY会创建并初始化为0:

语法(DECRBY):
decrby key 要减去的值。示例:
3.4 INCRBYFLOAT(浮点数运算)
专门用于浮点数增减,支持整数和浮点数:
语法:
incrbyfloat key 要加的数字。示例:
尽管存储为String,Redis内部会解析为数值进行运算。
[AFFILIATE_SLOT_1]4. 字符串操作与元数据
4.1 APPEND(追加内容)
将值追加到现有字符串末尾,若键不存在则等同于SET:
语法:
append key 要添加的子串。示例:
✅ 注意:即使是大数值也可以追加,不会触发数值越界错误:

4.2 GETRANGE(获取子串)
返回字符串的子串,支持负数索引(-1表示最后一个字符),左闭右闭区间:
语法:
getrange key 要访问的开头 要访问的结尾。示例:
⚠️ 若start大于end,返回空字符串。
4.3 SETRANGE(覆盖子串)
从指定偏移开始覆盖字符串:
语法:
setrange key 要覆盖的起始位置 value。示例:
若覆盖长度超过原字符串,Redis会自动扩容:

若键不存在,会创建新键并用\x00填充偏移前的空白:

4.4 STRLEN(获取长度)
返回字符串的字节长度(注意:中文在UTF-8下占3字节):
语法:
strlen key。示例:
若键类型非String,会报错。
[AFFILIATE_SLOT_2]5. 总结与实践建议
本文覆盖了Redis String类型的15个核心指令,从基础SET到高级的INCRBYFLOAT和SETRANGE。在实际开发中:
- 使用NX/XX避免并发覆盖;
- 利用EX/PX自动管理缓存过期;
- 在Python/Java/Go等语言中,批量操作需控制数量以防阻塞;
- 浮点数运算优先使用INCRBYFLOAT而非INCR。
掌握这些指令,你将能高效构建计数器、缓存和分布式锁等应用。希望本文对你有帮助!
浙公网安备 33010602011771号