首页 > 编程知识 正文

redis删除数据的三种方法,redis list 批量删除

时间:2023-05-06 04:10:02 阅读:273574 作者:3208

项目中某个redis的key下面有几十万条数据,用rdm工具删能卡死,于是用python写了一个脚本来删,效果非常不错,推荐给大家。
举个例子com:uecent:udata:climb下面有几十万条数据,比如
com:uecent:udata:climb:1000001
com:uecent:udata:climb:1000001
com:uecent:udata:climb:1000003

执行命令:
python3 redis_delete.py -d 2 -k com:uecent:udata:climb
-d 2:表示删除redis第2个数据库,可以指定0-15
-k:表示删除的key前缀

可以本地执行,也可以放到服务器上执行。建议拿到服务器上执行,本地执行估计比较慢。
拿到服务器上执行貌似也可以用redis客户端:redis-cli keys “com:uecent:udata:climb*” | xargs redis-cli del,不过还是感觉我这个脚本更方便,特别是装在docker容器里面的,或者没有权限登陆服务器的。

redis_delete.py

# -*- coding:UTF-8 -*-import redisimport sysimport getopt host = '127.0.0.1'port = '6379'password = 'xxxxxxxx' def delete(key, database): r = redis.Redis(host=host, port=port, db=database, password=password, decode_responses=True) list_keys = r.keys("%s*" % key) for key in list_keys: r.delete(key) if __name__ == "__main__": root_path = "" is_rename = True argv = sys.argv[1:] if len(argv) < 1: print('redis_delete.py -k <Key> -d <Database>') sys.exit() # 获取命令行参数 try: opts, args = getopt.getopt(argv, "hk:d:", ["kKey=", "dDatabase="]) except getopt.GetoptError: print('redis_delete.py -k <Key> -d <Database>') sys.exit(2) for opt, arg in opts: if opt == '-h': print('redis_delete.py -k <Key> -d <Database>') sys.exit() elif opt in ("-k", "--kKey"): key = arg elif opt in ("-d", "--dDatabase"): database = arg delete(key, int(database))

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。