• 清理 redis 死键


    场景:

    近一年来,公司redis服务器可用内存持续缓慢下降,究其原因,较早之前的key没有设置过期时间,最终变成了一些死key。

    参考文章:https://my.oschina.net/u/3023401/blog/2206618

    1、需要清理的keys。

    未设置ttl的keys,且半年内无访问。

    2、redis 删除过期建策略。

    Redis删除过期键有两种策略:passive way和active way.

    • passive way(惰性删除):当客户端访问到过期键时,发现它已过期,Redis会主动删除它
    • active way(定期删除):Redis会定期调用删除过期键,调用频率由参数hz控制,默认每秒调用10次

    3、获取keys的idletime

    127.0.0.1:6379> set aa bb
    OK
    
    127.0.0.1:6379> object idletime aa
    (integer) 12
    
    127.0.0.1:6379> get aa    # 访问后,idletime会清零
    "bb"
    
    127.0.0.1:6379> object idletime aa
    (integer) 2
    

     4、清理过期的idletime脚本。

    #!/bin/bash
    
    file_dir="/data/tmp"
    redis-cli -h jkb-hw-prod-apple1 -p 6391 --scan >$file_dir/$port.keys
    ruleTime='12960000'
    
    while read line
    do
        storageTime=$(redis-cli -h jkb-hw-prod-apple1 -p 6391 OBJECT IDLETIME ${line}|awk '{print $1}')
        if [ ! "${storageTime}x" == "x"  ];then
            if [ ${storageTime} -gt ${ruleTime} ];then
                redis-cli -h jkb-hw-prod-apple1 -p 6391 del ${delKey}
    	fi
        fi
        echo "${rowProcessed}" >/data/tmp/record-number.txt
    done <$file_dir/$port.keys
    
  • 相关阅读:
    转载-MongoDB 分片集群技术
    EXT4参数优化及测试---转载
    9.16周记
    PHP优化思路
    2018.09.10-拾遗
    周记8
    落地成盒-发快递
    周记7
    GTX log 6
    Gitlab Jenkins WebHook 持续集成配置踩坑记
  • 原文地址:https://www.cnblogs.com/sunshine-long/p/12582681.html
Copyright © 2020-2023  润新知