python redis连接池_redis 连接池

本文介绍了Python如何操作Redis,包括未使用连接池时的基本操作,如设置、获取、删除键值对,以及使用连接池进行高效管理Redis连接的方法。通过ConnectionPool创建连接池,实现多个Redis实例共享,降低了建立和释放连接的开销。

redis是一个key-value存储系统,和memcached类似,支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set-有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集和差集及更丰富的操作,而且这些操作都说原子性的。在此基础上,redis支持各种不同的方式排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

python 操作redis,未使用连接池:

redis-py提供两个Redis和StrictRedis用于实现Redis的命令,StrictRedis用于实现大部分官方的命令,并使用官方的语法和命令,Redis是StrictRedis的子类,用于向后兼容旧版本的redis-py.

importredis

db=0#连接redis,password不简写(否则或报错),db若不写,则默认操作db0

conn_redis = redis.Redis(host='127.0.0.1', port=6379, password='123456', db=db)#给redis添加值,传值方式是key-value,key不可重复,value的形式尽量是string,也可以传list、字典,redis内存放的是字节res = conn_redis.set('name', 'testredis')#print(res) #返回值是布尔类型,set成功,则返回true

conn_redis.set('days', '[10,4,5,12,44]')#set key值到redis内,且可以设置过期时间,10s

result = conn_redis.setex('session', 'abcder1233@sdfrr', 10) #单位是s

print(result) #返回值是布尔类型,set成功,则返回true#批量插入redis,可以写入多个key-valye

conn_redis.mset(a='xiaohei', b='xiaobai', c='xiaohuang')#设置key时,可以设置文件夹,user文件夹,key:test,value:haha

conn_redis.set('user:test','haha')

python 操作redis,使用连接池:

redis-py使用connection pool来管理对一个redis server的所有连接,避免每次建立、释放连接的开销。默认,每个Redis实例都会维护一个自己的连接池。可以直接建立一个连接池,然后作为参数Redis,这样就可以实现多个Redis实例共享一个连接池。

defgetcoon():

pool= redis.ConnectionPool(host='192.168.1.112', port=6379, password='123456', db=0)

coon= redis.Redis(connection_pool=pool)

coon.set('key', 'value')

res= coon.get('key')return res

redis 使用连接池操作

classOPRedis(object):def __init__(self):if not hasattr(OPRedis, 'pool'):

OPRedis.getRedisCoon()#创建redis连接

self.coon = redis.Redis(connection_pool=OPRedis.pool)

@staticmethoddefgetRedisCoon():

OPRedis.pool= redis.ConnectionPool(host=redisInfo['host'], password=redisInfo['password'], port=redisInfo['port'], db=redisInfo['db'])"""string类型 {'key':'value'} redis操作"""

def setredis(self, key, value, time=None):#非空即真非0即真

iftime:

res=self.coon.setex(key, value, time)else:

res=self.coon.set(key, value)returnresdefgetRedis(self, key):

res=self.coon.get(key).decode()returnresdefdelRedis(self, key):

res=self.coon.delete(key)returnres"""hash类型,{'name':{'key':'value'}} redis操作"""

defsetHashRedis(self, name, key, value):

res=self.coon.hset(name, key, value)returnresdef getHashRedis(self, name, key=None):#判断key是否我为空,不为空,获取指定name内的某个key的value; 为空则获取name对应的所有value

ifkey:

res=self.coon.hget(name, key)else:

res=self.coon.hgetall(name)returnresdef delHashRedis(self, name, key=None):ifkey:

res=self.coon.hdel(name, key)else:

res=self.coon.delete(name)return res

redisInfo配置

redisInfo ={"host": '192.168.1.112',"password": '123456',"port": 6379,"db": 0

}

创建test,测试redis连接

if __name__ == '__main__':

opr=OPRedis()

res= opr.setredis('two', '哈哈')

res= opr.getRedis('two')print(res)

参考链接:https://www.cnblogs.com/xiaoming279/p/6293583.html

Python 中使用 Redis 连接池可以有效管理对 Redis 数据库的连接,避免频繁创建和销毁连接带来的开销。下面将详细介绍如何设置、使用以及释放 Redis 的连接。 ### 设置 Redis 连接池 首先需要安装 `redis-py` 库 (如果还没有的话),可以通过 pip 安装: ```shell pip install redis ``` 然后你可以通过以下方式配置并初始化一个 Redis 连接池实例: ```python import redis # 创建Redis连接池,默认最大连接数为10 pool = redis.ConnectionPool(host='localhost', port=6379, db=0) # 使用连接池创建StrictRedisRedis客户端实例 r_client = redis.Redis(connection_pool=pool) ``` 这种方式允许你在应用程序的不同部分共享这个单一的连接资源集合(即连接池),而不是每次都新建单独的连接。 ### 使用与自动释放 当你从基于上述代码片段构造出来的 `r_client` 对象执行命令时,并不需要显式地去获取或关闭单个连接;实际上,在每次操作背后,都会有一个可用的连接从池中取出用于发送请求到服务器端并且接收响应数据。一旦该次交互完成,则会立即将此链接归还给连接池等待下一次分配。 因此,通常情况下你无需担心手动处理每个具体的数据库会话 - 框架已经帮你妥善安排好了这一点! 但是如果你确实想要明确控制某些情况下的行为模式(例如当异常发生导致未能正常结束某个事务链路等特殊情况),也可以选择更细致的操作步骤如获得当前线程所使用的实际socket引用等等...不过对于大多数应用场景来说并不必要这样做。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值