Python使用Redis,Redis连接池的用法
mhr18 2024-11-10 09:48 25 浏览 0 评论
直接上代码:
import redis, traceback, sys
from loguru import logger
class RedisClient:
__instance = None
def __new__(cls, *args, **kwargs):
if not cls.__instance:
return object.__new__(cls)
return cls.__instance
def __init__(self, host, port, password=None):
try:
# 拿到一个Redis实例的连接池,避免每次建立、释放连接的开销,节省了每次连接用的时间
self.POLL = redis.ConnectionPool(host=host,
port=port,
decode_responses=True,
db=0,
password=password,
max_connections=100)
logger.info(f'获取Redis连接池, Host={host}, Port={port}')
except Exception as e:
logger.error(f'获取Redis连接池异常, 程序退出:{str(e)},traceback={traceback.format_exc()}')
sys.exit(0)
def get_redis_client(self):
try:
# 从连接池中获取一个连接实例
redis_conn = redis.StrictRedis(connection_pool=self.POLL)
if redis_conn.ping():
logger.info(f'获取Redis连接实例成功')
return redis_conn
except Exception as e:
logger.error(f'Redis连接异常:{str(e)},traceback={traceback.format_exc()}')
上述是封装了一个RedisClient的类,使用了
redis.ConnectionPool 连接池,
这样能做到,大概的意思即:拿到一个Redis实例的连接池,避免每次建立、释放连接的开销,节省了每次连接用的时间,文中设置了最大100个。在获取实例做连接时,使用了
redis.StrictRedis(connection_pool=self.POLL)
文中使用了loguru记录日志。
在实际使用时,如下:
from tools.redisClient import RedisClient
import sqlite3, json
from config import Redis_Host, Redis_Port, Redis_pwd
redis_obj = RedisClient(Redis_Host, Redis_Port, Redis_pwd)
# 保存特征值到Redis指定的name、key中
def SaveFeatsToRedis(name, key, data):
redis_connect = redis_obj.get_redis_client()
redis_connect.hset(
name=name,
key=key,
value=json.dumps(data, ensure_ascii=False)
)
if __name__ == '__main__':
data, count = GetFeatsFromSqlite(100)
SaveFeatsToRedis(data)
redis_connect = redis_obj.get_redis_client()
print('查询Redis中所有的hkey', redis_connect.keys())
导入RedisClient,调用此类中的
get_redis_client() 方法,然后就是调用get、set即可。
相关推荐
- 从Oracle演进看数据库技术的发展(从oracle演进看数据库技术的发展的过程)
-
数据库技术发展本质上是应用需求驱动与基础架构演进的双向奔赴,如何分析其技术发展的脉络和方向?考虑到oracle数据库仍然是这个领域的王者,以其为例,管中窥豹,对其从Oracle8i到23ai版本的核...
- docker安装jdk并且部署java项目,一文看懂它部署springboot项目
-
1.下载jdkhttps://repo.huaweicloud.com/java/jdk/11.0.2+9/https://www.oracle.com/java/technologies/javas...
- PL/SQL 杂谈(六)(pl/sql for)
-
承接(五)。内容书写不容易,各位友友们,如果可以,麻烦点个赞,让我有动力可以写下去。这节主要谈谈关于SQL*Plus的其他任务。SQL*Plus有大量命令,但由于文章字数有限,我们只能聊一聊那...
- 快速解决Win远程桌面CredSSP加密数据库修正问题!
-
前不久我做渗透测试时,在Win10下通过Mstsc访问服务器的3389端口时,遇到了“身份验证错误,要求的函数不受支持”这个错误。这通常是由于客户端和服务器的CredSSP加密协议不匹配导致的。(一...
- 报表服务器SSRS的安装和Oracle database的配置
-
WindowsServer2022NETFramework3.5SQLServer2022(FromServerCNQSQLDB01)SQLServerManagementStudi...
- 网络安全面试题-SQL注入问题总结(sql注入攻击的防护方法)
-
一、知识储备类1.SQL与NoSQL的区别?SQL:关系型数据库NoSQL:非关系型数据库存储方式:SQL具有特定的结构表,NoSQL存储方式灵活性能:NoSQL较优于SQL数据类型:SQL适用结构化...
- 运维日记|postgresql-利剑出鞘-psql出手,天下我有
-
小编最近看了电影《利剑出鞘》,结局中,反派错拿了一把道具刀导致报复失败,所以说,选对工具很重要。在postgresql数据库中,有这样一个工具不得不提,那就是psql,掌握好psql,那么在运维管理p...
- 2021款14寸MacBook Pro使用体验真实感受
-
购买的2021款MacBookPro是14寸的加配10核心M1Pro芯片,32g内存,512g存储。已经使用两周了,说说这段时间的使用体验。1.外观和2015款的13寸对比,他俩的大小、尺寸、重量...
- 渗透测试岗位面试分享,多年经验(渗透测试岗位面试分享,多年经验怎么写)
-
综合启明星辰多年招聘渗透测试工程师的经验,发现有很多面试者喜欢说没接触过这个没接触过那个,都没接触过为什么要来面试,录取你的理由是什么?在面试中真遇到你不懂的技术问题,千万不要说没接触过,你可以说一些...
- 在 Spring Boot3 中如何轻松连接并操作 SQLLite 数据库?
-
你是不是正在为在SpringBoot3项目里连接并操作SQLLite数据库而发愁?在实际的软件开发过程中,选择轻量级且易于部署的数据库至关重要。当面对小型项目、资源受限的环境,或是对部署便捷...
- PHP开源项目ADOdb曝CVSS满分SQL注入漏洞
-
IT之家5月5日消息,PHP开源项目ADOdb于上周发布了v5.22.9版本,该版本主要修复一项CVSS风险评分高达10分(满分)的严重安全漏洞CVE-2025-46337...
- Maven常用命令(maven用法)
-
一、Maven常用命令及其介绍命令描述mvnclean对项目进行清理,删除target目录下编译的内容mvncompile编译项目源代码mvntest对项目进行运行测试mvnpackage打包...
- oracle数据恢复—oracle执行truncate命令误删除数据的数据恢复
-
oracle数据库误执行truncate命令导致数据丢失是一种常见情况。通常情况下,oracle数据库误操作删除数据只需要通过备份恢复数据即可。也会碰到一些特殊情况,例如数据库备份无法使用或者还原报错...
- Java单向代码执行链配合的动态代码上下文执行
-
Java反序列化漏洞的危害不光在于普通gadgets能够带来的命令执行,由于Java应用的使用场景以及gadgets大多都是构造出单向代码执行,一般通过利用链构造出的单向代码链能做到的能力往往有限。而...
- 如果可以从历史上抹去一种编程语言,你会选择哪个?
-
假设你获得一个程序员界的“死亡笔记”,但只能写下一种编程语言的名字,然后这门语言就会从历史中彻底抹除——没有它的发明、没有它的生态、更没有它写下的那几百万行遗产代码。你,会选择谁?是“人人喊打”的P...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- 从Oracle演进看数据库技术的发展(从oracle演进看数据库技术的发展的过程)
- docker安装jdk并且部署java项目,一文看懂它部署springboot项目
- PL/SQL 杂谈(六)(pl/sql for)
- 快速解决Win远程桌面CredSSP加密数据库修正问题!
- 报表服务器SSRS的安装和Oracle database的配置
- 网络安全面试题-SQL注入问题总结(sql注入攻击的防护方法)
- 运维日记|postgresql-利剑出鞘-psql出手,天下我有
- 2021款14寸MacBook Pro使用体验真实感受
- 渗透测试岗位面试分享,多年经验(渗透测试岗位面试分享,多年经验怎么写)
- 在 Spring Boot3 中如何轻松连接并操作 SQLLite 数据库?
- 标签列表
-
- oracle位图索引 (74)
- oracle基目录 (50)
- oracle批量插入数据 (65)
- oracle事务隔离级别 (53)
- oracle主从同步 (55)
- oracle 乐观锁 (51)
- redis 命令 (78)
- php redis (88)
- redis 存储 (66)
- redis 锁 (69)
- 启动 redis (66)
- redis 时间 (56)
- redis 删除 (67)
- redis内存 (57)
- redis并发 (52)
- redis 主从 (69)
- redis 订阅 (51)
- redis 登录 (54)
- redis 面试 (58)
- 阿里 redis (59)
- redis 搭建 (53)
- redis的缓存 (55)
- lua redis (58)
- redis 连接池 (61)
- redis 限流 (51)