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.
import redis
db = 0
#连接redis,password不简写(否则或报错),db若不写,则默认操作db0
conn_redis = redis.Redis(host='127.0.0.1', port=6379, password='', 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实例共享一个连接池。
def getcoon():
pool = redis.ConnectionPool(host='192.168.1.112', port=6379, password='', db=0)
coon = redis.Redis(connection_pool=pool)
coon.set('key', 'value')
res = coon.get('key')
return res
redis 使用连接池操作
class OPRedis(object): def __init__(self):
if not hasattr(OPRedis, 'pool'):
OPRedis.getRedisCoon() #创建redis连接
self.coon = redis.Redis(connection_pool=OPRedis.pool) @staticmethod
def getRedisCoon():
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即真
if time:
res = self.coon.setex(key, value, time)
else:
res = self.coon.set(key, value)
return res def getRedis(self, key):
res = self.coon.get(key).decode()
return res def delRedis(self, key):
res = self.coon.delete(key)
return res """
hash类型,{'name':{'key':'value'}} redis操作
"""
def setHashRedis(self, name, key, value):
res = self.coon.hset(name, key, value)
return res def getHashRedis(self, name, key=None):
# 判断key是否我为空,不为空,获取指定name内的某个key的value; 为空则获取name对应的所有value
if key:
res = self.coon.hget(name, key)
else:
res = self.coon.hgetall(name)
return res def delHashRedis(self, name, key=None):
if key:
res = self.coon.hdel(name, key)
else:
res = self.coon.delete(name)
return res
redisInfo配置
redisInfo = {
"host": '192.168.1.112',
"password": '',
"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
redis 连接池的更多相关文章
- Redis 连接池的问题
目录 Redis 连接池的问题 1 1. 前言 1 2.解决方法 1 前言 问题描述:Redis跑了一段时间之后,出现了以下异常. Redis Timeout ex ...
- 红眼技术博客 » redis连接池红眼技术博客 » redis连接池
红眼技术博客 » redis连接池 redis连接池
- redis连接池操作
/** * @类描述 redis 工具 * @功能名 POJO * @author zxf * @date 2014年11月25日 */public final class RedisUtil { p ...
- java操作redis redis连接池
redis作为缓存型数据库,越来越受到大家的欢迎,这里简单介绍一下java如何操作redis. 1.java连接redis java通过需要jedis的jar包获取Jedis连接. jedis-2.8 ...
- 三:Redis连接池、JedisPool详解、Redisi分布式
单机模式: package com.ljq.utils; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; ...
- 压测过程中,获取不到redis连接池,发现redis连接数高
说明:图片截得比较大,浏览器放大倍数看即可(涉及到隐私,打了码,请见谅,如果有疑问,欢迎骚扰). 最近在压测过程中,出现获取不到redis连接池的问题 xshell连接redis服务器,查看连接数,发 ...
- Redis连接池
package com.lee.utils; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; impor ...
- Redis】Java中使用Jedis操作Redis(Maven导入包)、创建Redis连接池
如果我们使用Java操作Redis, 需要确保已经安装了 redis 服务及 Java redis 驱动. Maven项目可以直接在pom.xml中加入jedis包驱动: <!-- https: ...
- redis连接池 jedis-2.9.0.jar+commons-pool2-2.4.2.jar
java使用Redis连接池 jar包为 jedis-2.9.0.jar+commons-pool2-2.4.2.jar jar下载地址 package com.test; import redis ...
- Java Redis 连接池 Jedis 工具类
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import redis.clients.jedis.Jedis; import re ...
随机推荐
- UVA270-Lining Up
斜率斜率斜率......... #include<iostream> #include<cstdio> #include<algorithm> #include&l ...
- has been modified since the precompiled header地图错误
添加高德地图的一个错误 has been modified since the precompiled header 解决方案: xcode---product----clean 清理重新编译一下就 ...
- 大并发server架构 && 大型站点架构演变
server的三条要求: 高性能:对于大量请求,及时高速的响应 高可用:7*24 不间断,出现问题自己主动转移.这叫fail over(故障转移) 伸缩性:使用跨机器的通信(TCP) 另外不论什么网络 ...
- 算法笔记_094:蓝桥杯练习 矩阵相乘(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 小明最近在为线性代数而头疼,线性代数确实很抽象(也很无聊),可惜他的老师正在讲这矩阵乘法这一段内容. 当然,小明上课打瞌睡也没问题,但线性 ...
- mui 页面跳转
1.初始化时创建子页面 mui.init({ subpages: [{ url: your - subpage - url, //子页面HTML地址,支持本地地址和网络地址 id: your - su ...
- Linux内核部件分析 原子性操作atomic_t
在任何处理器平台下,都会有一些原子性操作,供操作系统使用,我们这里只讲x86下面的.在单处理器情况下,每条指令的执行都是原子性的,但在多处理器情况下,只有那些单独的读操作或写操作才是原子性的.为了弥补 ...
- JavaScript | 创建对象的9种方法详解
————————————————————————————————————————————————————————— 创建对象 标准对象模式 "use strict"; // *** ...
- 阿里云 oss python3 样例
阿里云的oss SDK又是不支持python3,头疼头疼. 本想改一改它的SDK,让它支持python2+python3,无奈里面大量的代码使用不带括号的print.工作量恐怖. 幸好oss的使用很e ...
- 【web框架】Django
一.什么是web框架? 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单的说,就是你用别人搭建好的舞台来做表演. 对于所有 ...
- xml布局内容总结(三)--Android
关于xml中经经常使用到边框及边框效果,在此进行一下总结. 3.border(边框及边框效果) (1)直角边框线 <LinearLayout android:layout_wid ...