python批量删除redis key

server/2025/1/12 6:18:19/

  生产环境中要禁止使用keys *查询key, 因为redis低版本是单线程,如果key非常多的话,直接使用keys *会导致阻塞,所以应当使用scan命令,scan命令介绍请参考其他文档。

python"># -*- coding: utf-8 -*-
# @Time    : 2025/01/09
# @Author  : 养乐多
# @Mail    : oct_hao@163.com
# @File    : redis_del_keys.py
# @Use     : 利用scan命令批量删除redis keyimport redisclass Redis:def __init__(self, host, port, db=0):'''初始化redis连接:param host: redis host:param port: redis port:param db: redis db'''self.redis_host = hostself.redis_port = portself.redis_db = dbtry:# 连接redisself.redis_client = self._connect()except Exception as e:print('redis连接失败', e)def _connect(self):'''连接redis'''return redis.StrictRedis(host=self.redis_host, port=self.redis_port, db=self.redis_db)def _close(self):'''关闭redis连接'''self.redis_client.close()def batch_delete_keys(self, pattern, batch_size=1000):"""使用 SCAN 命令批量删除匹配给定模式的 Redis 键:param pattern: 要删除的键的模式:param batch_size: 每次扫描时的键的批量大小"""# 初始化游标cursor = 0 while True:# 使用 SCAN 命令遍历键cursor, keys = self.redis_client.scan(cursor=cursor, match=pattern, count=batch_size)# 删除匹配的键if keys:self.redis_client.delete(*keys)print('删除了%s个key' % len(keys))else:breakif cursor == 0:breakself._close()def get_all_key_count(self, pattern, batch_size=1000):'''使用 SCAN 命令批量删除匹配给定模式的 Redis 键:param pattern: 要删除的键的模式:param batch_size: 每次扫描时的键的批量大小'''# 初始化游标cursor = 0# 初始化计数器count = 0  while True:# 使用 SCAN 命令遍历键cursor, keys = self.redis_client.scan(cursor=cursor, match=pattern, count=batch_size)# 统计匹配的键的数量if keys:count += len(keys)else:breakif cursor == 0:breakself._close()return countif __name__ == "__main__":redis_host = '172.30.11.132'redis_port = 6379redis_db = 0pattern = '*123'batch_size = 1000# 连接到 Redisr = Redis(redis_host, redis_port, redis_db)# 查询key总数print(r.get_all_key_count(pattern=pattern, batch_size=batch_size))# 删除key# r.batch_delete_keys(pattern=pattern, batch_size=batch_size)


http://www.ppmy.cn/server/157682.html

相关文章

常见的http状态码 + ResponseEntity

常见的http状态码 ResponseStatus(HttpStatus.CREATED) 是 Spring Framework 中的注解,用于指定 HTTP 响应状态码。 1. 基本说明 HttpStatus.CREATED 对应 HTTP 状态码 201表示请求成功且创建了新的资源通常用于 POST 请求的处理方法上 2. 使用场景和示例 基本…

25.1.10学习笔记(算法(滑动窗口))

题目:在leetcode上 解释:什么是滑动窗口呢,在这道题里面,子串的长度为k,所以我们就可以将这个子串看为一个窗口,每次去统计窗口里面有多少满足要求,然后进行相关值的加减,滑动就体现在子串的第…

Qt C++读写NFC标签NDEF网址URI

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?spma21dvs.23580594.0.0.1d292c1biFgjSs&ftt&id615391857885 #include "mainwindow.h" #include "ui_mainwindow.h" #include <QDebug> #include "QLibrary" …

决策树中的相关概念

目录 算法介绍 基本概念&#xff1a; 节点 信息熵&#xff08;Information Entropy&#xff09; 条件熵&#xff08;Conditional Entropy&#xff09; python中计算对数 分类标准 信息增益&#xff08;ID3&#xff08;Iterative Dichotomiser 3&#xff09;算法的评估标…

ros2笔记- 5.2 python 中手眼坐标转换

本节继续跟小鱼老师学习5.2.先看下需求 相机固定在右上方的camera_link处&#xff0c;机械臂的底座固定在base_link处从base_link到camera_link的位置是固定不变的&#xff0c;瓶子可能是变的。求base_link到bottle_link的坐标关系&#xff0c;方便控制机械臂抓取瓶子。 5.2.1…

【Web安全】SQL 注入攻击技巧详解:UNION 注入(UNION SQL Injection)

【Web安全】SQL 注入攻击技巧详解&#xff1a;UNION 注入&#xff08;UNION SQL Injection&#xff09; 引言 UNION注入是一种利用SQL的UNION操作符进行注入攻击的技术。攻击者通过合并两个或多个SELECT语句的结果集&#xff0c;可以获取数据库中未授权的数据。这种注入技术要…

高斯函数Gaussian绘制matlab

高斯 约翰卡尔弗里德里希高斯&#xff0c;&#xff08;德语&#xff1a;Johann Carl Friedrich Gau&#xff0c;英语&#xff1a;Gauss&#xff0c;拉丁语&#xff1a;Carolus Fridericus Gauss&#xff09;1777年4月30日–1855年2月23日&#xff0c;德国著名数学家、物理学家…

简单的spring boot tomcat版本升级

简单的spring boot tomcat版本升级 1. 需求 我们使用的springboot版本为2.3.8.RELEASE&#xff0c;对应的tomcat版本为9.0.41&#xff0c;公司tomcat对应版本发现攻击者可发送不完整的POST请求触发错误响应&#xff0c;从而可能导致获取其他用户先前请求的数据&#xff0c;造…