String 字符串

String 是 Redis 最基础的数据类型,一个 key 对应一个 value。

value 可以是普通字符串、数字字符串、JSON 字符串或二进制内容。后端项目里最常见的用法是缓存一段数据、保存验证码、做计数器。

一、基本读写

SET name Tom
GET name
DEL name

执行结果:

GET name
"Tom"

覆盖写入:

SET name Jerry
GET name

SET 默认会覆盖旧值。

二、设置过期时间

写入时直接设置过期时间:

SET code:login:13800138000 9527 EX 300

含义:

部分说明
code:login:13800138000登录验证码 key
9527验证码
EX 300300 秒后过期

查看剩余时间:

TTL code:login:13800138000

毫秒级过期时间使用 PX

SET temp:value abc PX 5000

三、一次写入多个值

MSET user:1:name Tom user:1:city Beijing
MGET user:1:name user:1:city

MSETMGET 适合一次处理多个 String key,减少网络往返次数。

四、计数器

Redis 对数字字符串提供原子自增和自减命令。

SET article:100:view_count 0
INCR article:100:view_count
INCR article:100:view_count
GET article:100:view_count

一次增加指定数量:

INCRBY article:100:view_count 10

自减:

DECR article:100:view_count
DECRBY article:100:view_count 5

常见场景:

场景key 示例
文章浏览量article:100:view_count
登录失败次数login_fail:user:1
接口访问次数rate:api:user:1

五、只在不存在时写入

SETNX 表示 set if not exists。

SETNX lock:order:10001 processing

返回值:

返回含义
1写入成功
0key 已存在,写入失败

更常用的是在 SET 里同时加 NX 和过期时间:

SET lock:order:10001 processing NX EX 30

这类命令常用于简单分布式锁。锁必须设置过期时间,避免业务异常后锁永远不释放。

六、读取后删除

GETDEL 会读取 value,并立即删除 key。

SET code:login:13800138000 9527 EX 300
GETDEL code:login:13800138000
GET code:login:13800138000

适合一次性验证码、一次性 token 这类数据。

七、缓存 JSON

后端经常把数据库查询结果序列化成 JSON,再存入 Redis。

SET user:1:profile "{\"id\":1,\"name\":\"Tom\",\"age\":18}" EX 1800
GET user:1:profile

注意点:

注意原因
设置 TTL避免缓存长期不更新
控制 value 大小大 value 会增加网络和内存压力
修改字段时整体重写String 不适合频繁改局部字段

如果对象字段需要单独修改,Hash 更合适。