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

相关推荐
何以解忧,唯有..1 小时前
数据库索引失效的常见情况与优化策略
数据库·sql·oracle
这个DBA有点耶2 小时前
分布式数据库到底该不该上?从判断标准到架构选型的实战思考
数据库·架构·dba
启雀AI2 小时前
培训平台移动端离线学习方案设计与实现:视频缓存、断点续传与进度同步的工程实践
android·学习·缓存·音视频·企业lms
01_ice2 小时前
MySQL库和表的操作
数据库·mysql
布莱克6053 小时前
数据库索引分类:数据结构、物理存储与逻辑角度详解
数据结构·数据库
SelectDB3 小时前
DeepSeek Harness 接入 Litefuse:完善 Agent 可观测与评估能力
数据库
福大大架构师每日一题3 小时前
agno v2.9.0发布:身份感知调度、缓存隔离、安全加固与组件重建全面升级
安全·缓存
这个DBA有点耶4 小时前
从库延迟的“二次放大”效应:一次大事务,拖垮整个读写分离
数据库·mysql·架构
LearnYard4 小时前
自然语言驱动的数据图表生成:几款工具功能对比实践
数据库·百度·powerpoint
一个有温度的技术博主5 小时前
MySQL 三大日志协同机制:redo log、undo log 与 binlog 的联合运作
数据库·mysql·oracle