Files
Jarvis_java/Redis清理说明.md
2025-10-28 00:33:26 +08:00

3.5 KiB
Raw Blame History

Redis键清理功能说明

功能概述

本功能用于清理Redis中超过93天3个月的旧数据支持两种类型的键

  1. tag键:格式为 tag:hash值:YYYY-MM-DD HH,例如 tag:01381d95e4936f1f3fe643bba2171894:2025-01-12 00
  2. jd:refresh:tag键:格式为 jd:refresh:tag:hash值:YYYY-MM-DD HH:mm:ssjd:refresh:tag:YYYY-MM-DD HH:mm:ss

使用方式

方式一手动调用API接口推荐

⚠️ 注意端口号

  • jd项目端口6666直接访问无需认证
  • RuoYi框架端口30313需要认证不推荐

发送POST请求到http://your-server:6666/jd/cleanRedisData

请求示例:

curl -X POST http://192.168.8.88:6666/jd/cleanRedisData \
  -H "Content-Type: application/json" \
  -d '{
    "skey": "2192057370ef8140c201079969c956a3"
  }'

响应示例:

{
  "success": true,
  "message": "Redis清理任务已执行完成详情请查看日志"
}

方式二使用Postman等工具

  1. 创建新的POST请求
  2. URL: http://192.168.8.88:6666/jd/cleanRedisData注意是6666端口
  3. Headers: Content-Type: application/json
  4. Body 标签选择 raw 格式,类型选择 JSON
  5. Body 内容:
{
  "skey": "2192057370ef8140c201079969c956a3"
}

⚠️ 常见错误

  • 不要把skey放在Query参数中
  • 不要使用30313端口会遇到401认证错误
  • 确保在Body标签中使用JSON格式

方式三:自动定时执行

系统已配置定时任务每天凌晨3点自动执行清理

  • tag键清理每天凌晨3点执行cron: 0 0 3 * * ?
  • jd:refresh:tag键清理每月1日11:45执行cron: 0 45 11 * * ?

清理规则

  • 截止日期当前时间减去93天
  • 清理对象:所有早于截止日期的键
  • 安全性:只删除符合特定格式且过期的键

例如:

  • 当前时间2025-10-27
  • 截止日期2025-07-26
  • 将删除2025-07-26之前的所有符合格式的键
  • 保留2025-07-26及之后的键

日志查看

清理任务执行时会输出详细日志,可通过以下日志查看执行情况:

开始清理93天前的tag键数据截止时间YYYY-MM-DD HH:mm:ss
找到 X 个tag相关的键
已删除 100 个过期的tag键
已删除 200 个过期的tag键
...
tag键清理完成共删除 X 个过期键

注意事项

  1. skey验证调用接口需要提供正确的skey密钥
  2. 执行时间:建议在业务低峰期手动执行清理,避免影响性能
  3. 备份建议首次执行前建议备份Redis数据
  4. 监控日志:执行后及时查看日志,确认清理结果

代码位置

  • 清理逻辑d:\code\jd\src\main\java\cn\van\business\util\JDScheduleJob.java

    • cleanOldTagRedisData() - 清理tag键
    • cleanOldRedisHashData() - 清理jd:refresh:tag键
    • manualCleanOldRedisData() - 手动触发清理
  • API接口d:\code\jd\src\main\java\cn\van\business\controller\jd\JDInnerController.java

    • /jd/cleanRedisData - POST接口

常见问题

Q: 如何查看当前Redis中有多少符合条件的键 A: 可以使用Redis命令

redis-cli KEYS "tag:*" | wc -l
redis-cli KEYS "jd:refresh:tag:*" | wc -l

Q: 清理后可以恢复吗? A: 不可以,删除操作是不可逆的,请谨慎操作。

Q: 如果需要调整清理天数怎么办? A: 修改 JDScheduleJob.java 中的 minusDays(93) 参数,例如改为 minusDays(60) 清理60天前的数据。