019-批量修改redis TTL和批量删除key

这是坚持技术写作计划(含翻译)的第19篇,定个小目标999,每周最少2篇。

如果因为历史原因,导致redis里存在无用且没有设置ttl的key,会造成浪费。本文主要讲如何在不阻塞redis的情况下批量修改redis的ttl和使用通配符删除key。

通配符删除key

redis-cli [-a password] [-h localhost] [-p 6379] --scan --pattern pattern* | xargs redis-cli [-a password] [-h localhost] [-p 6379] del
复制代码

其中 [] 包裹的都是可选项

  • -p 端口
  • -h 是redis主机
  • -a 是密码
  • pattern* 是通配符

SCAN,SSCAN,HSCAN,ZSCAN四个命令都支持增量式迭代, 它们每次执行都只会返回少量元素, 所以这些命令可以用于生产环境, 而不会出现像 KEYS 命令、 SMEMBERS 命令带来的问题 —— 当 KEYS 命令被用于处理一个大的数据库时, 又或者 SMEMBERS 命令被用于处理一个大的集合键时, 它们可能会阻塞服务器达数秒之久。

参考资料  redis 命令 SCAN

批量打印或者修改TTL

使用方式

$ pip install redis
$ python keys.py --help

usage: keys.py [-h] [-p PORT] [-d DB_LIST] [--host HOST] [--password PASSWORD]
               [--expire EXPIRE] [--random_upper RANDOM_UPPER]
               [--max_ttl MAX_TTL]

optional arguments:
  -h, --help            show this help message and exit
  -p PORT               port of redis
  -d DB_LIST            ex : -d all / -d 1,2,3,4
  --host HOST           ex : --host 127.0.0.1
  --password PASSWORD   ex : --password password
  --expire EXPIRE       unit: sec ,ex 1 days = 86400 sec: --expire 86400
  --random_upper RANDOM_UPPER
                        unit: sec ,ex 1 mins = 60 sec: --random_upper 60
  --max_ttl MAX_TTL     unit: sec ,ex 1 mins = 60 sec: --max_ttl 60

复制代码
# encoding: utf-8
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值