Redis 从入门到精通(四):字符串操作详解

系列导读:本篇将深入讲解 Redis 字符串(String)的所有操作命令及实际应用场景。


文章目录


一、字符串命令总览

命令 说明
SET/GET 设置/获取值
SETEX/SETEX 设置带过期时间
SETNX 不存在时设置
MSET/MGET 批量设置/获取
INCR/DECR 递增/递减
APPEND 追加字符串
STRLEN 获取长度

二、基础操作命令

2.1 SET 命令详解

bash 复制代码
# 基本设置
SET key value

# 带参数设置
SET key value [NX|XX] [GET] [EX seconds|PX milliseconds]

# NX: 不存在时设置
SET lock:key "locked" NX

# XX: 存在时更新
SET key "newvalue" XX

# EX: 秒级过期
SET key "value" EX 60

# PX: 毫秒级过期
SET key "value" PX 60000

# GET: 返回旧值
SET key "newvalue" GET

2.2 GET 相关命令

bash 复制代码
# 获取值
GET key

# 获取并设置新值
GETSET key "newvalue"

# 获取子串
GETRANGE key 0 5

# 批量获取
MGET key1 key2 key3

2.3 字符串操作

bash 复制代码
# 追加内容
APPEND key "suffix"

# 获取长度
STRLEN key

# 设置子串
SETRANGE key 0 "new"

三、数值操作命令

3.1 递增操作

bash 复制代码
# +1
INCR counter

# +n
INCRBY counter 10

# +浮点数
INCRBYFLOAT price 2.5

3.2 递减操作

bash 复制代码
# -1
DECR counter

# -n
DECRBY counter 5

四、位操作命令

4.1 位操作

bash 复制代码
# 设置位
SETBIT mykey 0 1
SETBIT mykey 1 0

# 获取位
GETBIT mykey 0

# 统计1的个数
BITCOUNT mykey

# 位运算
BITOP AND destkey key1 key2
BITOP OR destkey key1 key2
BITOP XOR destkey key1 key2
BITOP NOT destkey key

五、实战应用场景

5.1 分布式锁

bash 复制代码
# 加锁
SET lock:resource "uuid" NX EX 30

# 解锁(Lua脚本保证原子性)
if redis.call("GET", KEYS[1]) == ARGV[1] then
    return redis.call("DEL", KEYS[1])
else
    return 0
end

5.2 计数器

bash 复制代码
# 文章阅读量
INCR article:100:views

# 限流计数
INCR rate:user:1001
EXPIRE rate:user:1001 60

5.3 缓存

bash 复制代码
# 缓存JSON数据
SET cache:user:1001 '{"name":"张三","age":25}'
EXPIRE cache:user:1001 3600

# 缓存穿透防护
SET cache:null:1001 "" EX 60

总结

本文我们学习了:

基础操作 :SET/GET/MSET/MGET

数值操作 :INCR/DECR/INCRBY

位操作 :SETBIT/GETBIT/BITCOUNT

应用场景:分布式锁、计数器、缓存

下篇预告Redis 从入门到精通(五):哈希操作详解


作者 :刘~浪地球
系列 :Redis 从入门到精通(四)
更新时间:2026-04-03

相关推荐
Mahir083 小时前
Redis 与 MySQL 数据同步:一致性保证的完整解决方案
数据库·redis·mysql·缓存·面试·数据一致性
2301_769340673 小时前
如何在 Vuetify 中可靠捕获 Chip 关闭事件(包括键盘触发).txt
jvm·数据库·python
AC赳赳老秦3 小时前
供应链专员提效:OpenClaw自动跟踪物流信息、更新库存数据,异常自动提醒
java·大数据·服务器·数据库·人工智能·自动化·openclaw
灵犀学长4 小时前
基于 Spring ThreadPoolTaskScheduler + CronTrigger 实现的动态定时任务调度系统
java·数据库·spring
北秋,4 小时前
PostgreSQL(Postgres)数据库基础用法 + 数字型 + 字符型 完整联合注入实战
数据库·postgresql·开源
m0_596749095 小时前
JavaScript中手动实现一个new操作符的底层逻辑
jvm·数据库·python
多加点辣也没关系5 小时前
Redis 的安装(详细教程)
数据库·redis·缓存
数据库小学妹5 小时前
数据库连接池避坑指南:告别“连接超时”与“资源耗尽”,让系统跑得更快!
数据库·redis·sql·mysql·缓存·dba
dishugj5 小时前
HANA 数据库备份与恢复
数据库·oracle
前进的李工6 小时前
EXPLAIN输出格式全解析:JSON、TREE与可视化
开发语言·数据库·mysql·性能优化·explain