首页 > 数据库 >使用python批量删除redis key

使用python批量删除redis key

时间:2024-02-27 11:57:18浏览次数:21  
标签:key python myenv py redis 虚拟环境 install pip

 

比如我的业务。刚上线默认为超级管理员新增权限

-- 请导出id 用于清缓存 svc格式 请注意分页 需要导出全部
select CONCAT('@rbac/ent/aclgr/',e.id) as 需要清理缓存的rediskey from ent_rbac_group e where
not exists(select p.`groupid` from ent_rbac_group_permission p where e.id=p.`groupid` and p.`targetid`='transfer::FileTransfer') and ( `name` ='超级管理员')



INSERT IGNORE INTO ent_rbac_group_permission (groupid, targetid, targettype, allow)
select e.id, 'transfer::FileTransfer', 1, 1 from ent_rbac_group e where
not exists(select p.`groupid` from ent_rbac_group_permission p where e.id=p.`groupid` and p.`targetid`='transfer::FileTransfer') and ( `name` ='超级管理员');

svc格式

 

py脚本

#!/usr/bin/python
#-*- coding:utf-8 -*-



import redis
import sys
reload(sys)
sys.setdefaultencoding("utf-8")


def redis_delbyfile(filepath):
    host = 'xxx'
    password = 'xxx'
    Pool = redis.ConnectionPool(host=host, port=26379, password=password, socket_connect_timeout=5)
    r = redis.StrictRedis(connection_pool=Pool)
    with open(filepath, 'r') as f:
        contents = f.readlines()
    for content in contents:
        content = str(content.strip('\r\n').strip('\n'))
        print(content)
        result = r.delete(content)
        print(repr(result))


if __name__ == '__main__':
    if len(sys.argv) == 2:
        filepath = sys.argv[1]
        redis_delbyfile(filepath)

1.安装环境

pip install reload

pip install redis

执行

python3 {脚本path}.py {svcpath}.csv

 

常见问题

安装python脚本

1.先检测下是否安装python:在命令行里输入命令

ls -l /usr/bin | grep python

如果没有则正常安装

未安装redis模块

Traceback (most recent call last):
  File "/Users/liqiang/Desktop/redis_exec.py", line 6, in <module>
    import redis
ModuleNotFoundError: No module named 'redis'

安装redis模块

pip install redis

1.如果未安装pip则先安装pip

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py

or

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py

pip安装失败

➜  Desktop python3 get-pip.py                                     
error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try brew install
    xyz, where xyz is the package you are trying to
    install.
    
    If you wish to install a non-brew-packaged Python package,
    create a virtual environment using python3 -m venv path/to/venv.
    Then use path/to/venv/bin/python and path/to/venv/bin/pip.
    
    If you wish to install a non-brew packaged Python application,
    it may be easiest to use pipx install xyz, which will manage a
    virtual environment for you. Make sure you have pipx installed.

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.

推荐的做法是创建一个虚拟环境来管理您的Python包,而不是尝试在全局环境中安装包。

python3 -m venv myenv (这将在当前目录下创建一个名为myenv的新虚拟环境。)

source myenv/bin/activate (nix/Linux 激活)

myenv\Scripts\activate (windows 激活)

再执行 

pip install redis 

(myenv) ➜  Desktop pip install redis 
Collecting redis
  Downloading redis-5.0.1-py3-none-any.whl.metadata (8.9 kB)
Downloading redis-5.0.1-py3-none-any.whl (250 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 250.3/250.3 kB 1.1 MB/s eta 0:00:00
Installing collected packages: redis
Successfully installed redis-5.0.1
(myenv) ➜  Desktop 

pyhon3执行

需要删除 

import importlib importlib.reload(sys) sys.setdefaultencoding("utf-8")  

如何退出和进入环境

要进入和退出虚拟环境(myenv),您需要使用以下命令:

进入虚拟环境:

在终端或命令提示符下,使用以下命令进入虚拟环境:

对于 Unix/Linux 系统:

source myenv/bin/activate

对于 Windows 系统:

myenv\Scripts\activate

退出虚拟环境:

在虚拟环境中工作完成后,您可以通过运行以下命令来退出虚拟环境:

deactivate

这样就可以退出虚拟环境,并返回到全局环境中。

请注意,在退出虚拟环境之前,您将无法使用deactivate命令。这个命令只在虚拟环境中有效。

 

标签:key,python,myenv,py,redis,虚拟环境,install,pip
From: https://www.cnblogs.com/LQBlog/p/18036577

相关文章

  • Python 中动态调用函数或类的方法
    使用importlib#module.pyclassA:deffoo(self):print('thisisfoo.')@staticmethoddefstatic_method():print('thisisstatic.')defbar():print('bar……')defbaz():print('==......
  • Vue+Vite+Ts+Python后端demo
    一、创建前端工程1.安装node进入官网下载:Node.js(nodejs.org) 选择安装路径后,默认安装;确认是否成功安装: 2.创建vite项目①:npminitvite@latest②:输入项目名、选择Vue、选择Ts;cd到项目文件夹里;安装依赖项:npmi,启动项目:npmrundev③:打开浏览器,进入:http://localhost:5......
  • Redis扩展功能
    Redis事务一次操作执行多条命令,本质是一组命令的集合。一个事务中的所有命令都会序列化,按顺序地串行化执行而不会被其它命令插入、不许加塞。由于redis只能在执行前检查一组命令的语法错误,在命令执行时出现异常没法全体回滚,所以是弱一致性。multi+exec组合正常执行执行前队......
  • Python3中的“联动”现象
    技术背景在python中定义一个列表时,我们一定要注意其中的可变对象的原理。虽然python的语法中没有指针,但是实际上定义一个列表变量时,是把变量名指到了一个可变对象上。如果此时我们定义另外一个变量也指到同一个可变对象的话,就会造成一个“联动”的现象。也就是改变其中的一个值时......
  • python3的json数据库-TinyDB效率篇
    安装了这个TinyDB库后,我突然想到一般来说python执行的速度并不算高,那这个库写文件速度如何呢?测试代码如下:fromtinydbimportTinyDBimporttime#创建数据库对象db=TinyDB('db.json')milliseconds1=int(time.time()*1000)db.insert({'type':'apple','count':......
  • Python函数每日一讲 - 简洁快速学会globals()函数
    引言在Python中,globals()函数是一个强大的工具,它允许您访问全局命名空间中的所有变量和函数。本文将深入探讨globals()函数的语法、用法以及实际应用场景,帮助大家更好地理解和使用这个函数。语句概览globals()函数的语法如下:globals()函数实例下面是globals()函数......
  • python3的json数据库-TinyDB
    无意间看到TinyDB这个词汇,就去查了一下,就发现了它的官方网站这里然后就是按照他说的步骤去做。第1步安装  pip3installtinydb 安装成功后,创建一个文件名字叫做 test.py,输入下面的代码:fromtinydbimportTinyDB,Query#创建数据库对象db=TinyDB('db.json')#......
  • 深入解析Python并发编程的多线程和异步编程
    本文分享自华为云社区《Python并发编程探秘:多线程与异步编程的深入解析》,作者:柠檬味拥抱。在Python编程中,多线程是一种常用的并发编程方式,它可以有效地提高程序的执行效率,特别是在处理I/O密集型任务时。Python提供了threading模块,使得多线程编程变得相对简单。本文将深入探讨thre......
  • 把python脚本制作成exe
    将Python脚本转换为可执行文件(exe)的方法之一是使用PyInstaller。这是一个流行的第三方库,可以将Python脚本打包成独立的可执行文件,在没有安装Python解释器的计算机上运行。以下是详细步骤:1.安装PyInstaller首先,确保你已经安装了Python和pip。然后在命令行或终端中运行以下命令来......
  • 将 Redis 数据放置在 Controller 层还是 Service 层
    在三层架构中,将Redis数据放置在Controller层还是Service层,同样需要根据具体的业务需求和设计原则来决定。以下是一些常见的考虑因素:数据访问频率:如果某个数据在多个请求之间频繁被读取或写入,可以考虑将其放置在Service层的缓存中,以减少对Redis的频繁操作。这样可以提高......