Redis与MySQL数据不一致问题

发布于:2025-08-31 ⋅ 阅读:(23) ⋅ 点赞:(0)

起因

日常维护中,发现页面数据与数据库不一致

数据库

在这里插入图片描述

页面

在这里插入图片描述

解决办法

一、使用Redis键过期功能模拟定时删除(临时办法)

 # 连接到Redis服务器
 redis-cli
 # 设置键并同时设置过期时间
 SET sys_config:dataReport_allNumber "your_value" EX 300
 # 或者如果键已存在
 EXPIRE sys_config:dataReport_allNumber 300
 # 验证设置
 TTL sys_config:dataReport_allNumber
 # 这会返回剩余的秒数,确认过期时间已设置成功
 

二、编写Shell脚本,使用CRON定时任务(长久、最可靠)

1.创建 redis_delete_key.sh

备注:脚本不要放在挂载磁盘上,最好放在/home,/data上。放在挂载磁盘,会导致定时任务找不到脚本文件
#!/bin/bash

# 设置Redis密码环境变量
export REDISCLI_AUTH="redis@123.com"

# 打印开始时间
echo "=== Starting Redis cleanup script at: $(date '+%Y-%m-%d %H:%M:%S') ==="

# 删除指定的Redis键并记录结果
echo "Deleting sys_config:dataReport_allNumber..."
redis-cli -h 127.0.0.1 -p 6379 DEL sys_config:dataReport_allNumber

echo "Deleting sys_config:dataReport_yesterdayNumber..."
redis-cli -h 127.0.0.1 -p 6379 DEL sys_config:dataReport_yesterdayNumber

echo "Deleting sys_config:dataReport_todayWaitNumber..."
redis-cli -h 127.0.0.1 -p 6379 DEL sys_config:dataReport_todayWaitNumber

# 取消环境变量(可选,因为脚本结束后环境变量自动失效)
unset REDISCLI_AUTH

# 打印完成时间
echo "=== Script completed at: $(date '+%Y-%m-%d %H:%M:%S') ==="

# 空行,让日志更易读
echo "" 

2. 给脚本执行权限

chmod +x redis_delete_key.sh

3.设置CRON定时任务

#编辑定时任务
crontab -e
#编辑内容
59 7 * * * /home/delete_redis_keys.sh >> /tmp/redis_delete.log 2>&1
59 11 * * * /home/delete_redis_keys.sh >> /tmp/redis_delete.log 2>&1
59 17 * * * /home/delete_redis_keys.sh >> /tmp/redis_delete.log 2>&1
06 9 * * * /home/delete_redis_keys.sh >> /tmp/redis_delete.log 2>&1
#保存退出
:wq

网站公告

今日签到

点亮在社区的每一天
去签到