Redis与MySQL数据不一致问题

起因

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

数据库

在这里插入图片描述

页面

在这里插入图片描述

解决办法

一、使用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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

twdnote

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值