CentOS下Redis事务处理配置详解 (2026)

什么是Redis事务

Redis事务是一组命令的集合,通过MULTI、EXEC、DISCARD和WATCH四个命令实现。事务中的命令会被按顺序执行,期间不会被其他客户端命令插入。

CentOS上配置Redis事务的前提

在开始配置事务之前,确保你的CentOS系统已经完成以下准备工作:

  • 已安装Redis服务(建议7.0及以上版本)
  • Redis服务正常运行
  • 具备root或sudo权限

检查Redis版本

redis-server --version
redis-cli ping

如果返回PONG,说明服务正常。

Redis事务核心命令详解

1. MULTI — 开启事务

MULTI命令标记事务开始,之后的所有命令都会进入队列而非立即执行:

127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> SET key1 value1
QUEUED
127.0.0.1:6379> SET key2 value2
QUEUED

2. EXEC — 提交事务

EXEC命令一次性执行队列中的所有命令:

127.0.0.1:6379> EXEC
1) OK
2) OK

3. DISCARD — 取消事务

如果想放弃当前事务,使用DISCARD清空命令队列:

127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> SET key3 value3
QUEUED
127.0.0.1:6379> DISCARD
OK

4. WATCH — 乐观锁

WATCH用于监控一个或多个键,如果在EXEC执行前这些键被其他客户端修改,事务将自动取消:

127.0.0.1:6379> WATCH counter
OK
127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> INCR counter
QUEUED
127.0.0.1:6379> EXEC
1) (integer) 2

CentOS中Redis事务配置优化

修改redis.conf关键参数

编辑Redis配置文件以优化事务行为:

sudo vi /etc/redis/redis.conf

需要关注的配置项:

配置项 建议值 说明
timeout 300 客户端空闲超时,避免长时间占用连接
maxclients 10000 最大客户端连接数
maxmemory 2gb 内存上限,防止事务占用过多内存
appendonly yes 开启AOF持久化,保证事务数据安全

开启AOF持久化保障事务数据

事务执行后数据仅存在内存中,建议开启AOF确保数据不丢失:

# redis.conf中修改
appendonly yes
appendfsync everysec

修改后重启Redis:

sudo systemctl restart redis

事务使用注意事项

  • Redis事务不支持回滚:如果队列中某条命令执行失败,其余命令仍会继续执行,这是与MySQL事务的重要区别
  • WATCH必须在MULTI之前调用:顺序不能颠倒
  • 事务中不能嵌套MULTI:事务内再次调用MULTI会报错
  • 大量命令的事务会阻塞Redis:Redis是单线程模型,长事务会影响其他客户端响应
  • WATCH的键在EXEC后会自动取消监控:无需手动UNWATCH

实战示例:用事务实现秒杀库存扣减

# 终端1:监控库存
127.0.0.1:6379> WATCH stock:10086
OK
127.0.0.1:6379> GET stock:10086
"10"
127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> DECR stock:10086
QUEUED
127.0.0.1:6379> EXEC
1) (integer) 9

如果EXEC返回nil,说明库存被其他客户端抢先修改,需要重新获取并重试。

常见问题排查

事务返回nil

说明WATCH监控的键被修改,事务被取消。解决方案:

  • 捕获nil返回值后重试整个事务流程
  • 减少WATCH到EXEC之间的耗时操作

事务中命令报错

区分两种错误类型:

  • 命令语法错误:进入队列时就会报错,EXEC会拒绝执行整个事务
  • 运行时错误(如对字符串执行INCR):只有该命令失败,其余命令正常执行

连接超时导致事务丢失

在redis.conf中适当增大timeout值,或在应用层使用连接池管理。

总结

CentOS下Redis事务配置的核心在于理解MULTI/EXEC/DISCARD/WATCH四个命令的协作机制,配合AOF持久化保障数据安全,同时注意Redis事务不支持回滚这一关键特性。在实际业务中,结合WATCH实现乐观锁是最常见的事务应用模式。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注