本文目录导读:

Redis 过期键清理
Redis 已内置过期键清理机制,但可使用脚本手动触发清理或检查。
# clean_redis_expired.py
import redis
import time
def clean_expired(host='localhost', port=6379, db=0):
r = redis.StrictRedis(host=host, port=port, db=db)
# 使用 SCAN 分批扫描(避免阻塞)
cursor = '0'
while cursor != 0:
cursor, keys = r.scan(cursor=cursor, count=1000)
for key in keys:
# 检查剩余生存时间(TTL),若 <=0 则已过期
ttl = r.ttl(key)
if ttl == -2: # 键已不存在(被其他进程删除)
continue
elif ttl == -1: # 没有设置过期时间,可选择性跳过或处理
continue
elif ttl == 0: # 正好过期,立即删除
r.delete(key)
print(f"Deleted expired key: {key}")
time.sleep(0.1) # 控制频率
if __name__ == '__main__':
clean_expired()
Memcached 过期键清理
Memcached 自动清理过期数据,但可手动触发 lru_crawler 或使用统计刷新。
# 通过 telnet 手动触发清理(慎用) echo "lru_crawler metadump all" | nc localhost 11211
或使用 Python 脚本(仅统计,不强制删除):
import memcache mc = memcache.Client(['127.0.0.1:11211']) # Memcached 会自动处理,通常无需手动删除 # 可通过 stats 查看 evictions 等指标 stats = mc.get_stats() print(stats)
本地文件缓存清理
清理超过指定时间的缓存文件。
#!/bin/bash # clean_file_cache.sh CACHE_DIR="/var/cache/myapp" EXPIRY_DAYS=7 # 删除 7 天前修改过的文件 find "$CACHE_DIR" -type f -mtime +$EXPIRY_DAYS -delete # 可选:记录日志 LOGFILE="/var/log/clean_cache.log" echo "$(date): Deleted files older than $EXPIRY_DAYS days from $CACHE_DIR" >> $LOGFILE
数据库查询结果缓存(如 MySQL 查询缓存)
MySQL 8.0+ 已废弃查询缓存,可使用以下方式重置:
-- 检查当前查询缓存状态 SHOW VARIABLES LIKE 'query_cache_type'; -- 如果为 ON,可尝试 RESET QUERY CACHE(需 SUPER 权限) RESET QUERY CACHE; -- 或直接禁用(需重启或 SET GLOBAL) SET GLOBAL query_cache_type = 0;
通用 HTTP 缓存(如 Varnish)
使用 varnishadm 清除过期缓存:
# 清除所有缓存(谨慎,可能影响性能) varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082 ban req.url ~ . # 或仅清除过期对象(通过强制刷新 TTL) varnishadm -T 127.0.0.1:6082 "ban obj.ttl < 0"
注意事项
- 备份数据:在清理前确认无重要数据。
- 压力控制:大量删除可能影响性能,建议分批执行。
- 自动调度:可结合
cron定时执行(如每天凌晨低峰期)。 - 日志记录:记录清理数量和时间,便于监控。
如果你的具体缓存实现不同(如自定义 HashMap 缓存、APCu 等),请提供缓存机制,我可以给出更精准的方案。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播