安装python包

pip install redis==2.10.6

普通操作

import redisabc = {"aa":{"bb":"cc"}}
r = redis.Redis(host='192.168.2.139', port=6379, db=1, password="111111", decode_responses=True)
try:r.ping()
except TimeoutError:print('redis connection timeout')
r.lpush("abccba", abc)

连接池

#-*-coding:utf-8-*-
import redis# 连接池连接使用,节省了每次连接用的时间
conn_pool = redis.ConnectionPool(host='localhost', port=6379, db=1, password="111111", decode_responses=True)
# 第一个客户端访问
re_pool = redis.Redis(connection_pool=conn_pool, decode_responses=True)
# 第二个客户端访问
re_pool2 = redis.Redis(connection_pool=conn_pool, decode_responses=True)
# key value存储到redis数据库
try:re_pool.set('chinese1', 'hello_world')re_pool2.set('chinese2', 'hello_python')
except Exception as e:print(e)
# 根据key获取存的数据的内容
data_info = re_pool.get('chinese1')
data_info2 = re_pool.get('chinese2')
# 输出从redis库中取出来的数据的内容
print(data_info)
print(data_info2)
# 获取两个连接的信息
id1 = re_pool.client_list()
id2 = re_pool2.client_list()
# 输出两个连接的id,判断是否一致
print('re_pool_id{}======re_pool2_id{}'.format(id1[0]['id'], id2[0]['id']))

实例封装

#! /usr/bin/env python
# -*- coding: utf-8 -*-import sys
import time
import loggingimport redislogger = logging.getLogger()class RedisDB(object):def __init__(self, host, port, password, db, list_name, ):self.host = hostself.port = portself.password = passwordself.db = dbself.list_name = list_nameself.lock = Falseself.redis_conn = None#self.redis_conn = self.get_redis_connect()#if self.redis_conn is None:#    logger.error("Redis connect fail.")#    sys.exit()def get_redis_connect(self):#connect_num = 5#while connect_num:while True:try:self.redis_conn = redis.Redis(self.host,self.port,self.db,self.password,decode_responses=True)self.redis_conn.ping()self.lock = Truebreakexcept Exception as e:logger.error("Redis connection timeout, waiting for reconnection.")#if connect_num > 0:#    connect_num -= 1#    continueself.lock = Falsetime.sleep(5)continuedef pinging(self):try:self.redis_conn.ping()return Trueexcept Exception as e:logger.error("Redis connection timeout")return Falsedef get_redis_data(self):try:data = self.redis_conn.rpop(self.list_name)return dataexcept Exception as e:logger.error("Get redis data fail.")return Nonedef send_result(self, result_list_name, result):try:self.redis_conn.lpush(result_list_name, result)return Trueexcept Exception as e:logger.error("Send ai result data to redis fail: {}.".format(e))return False

调用

def thread_get_data():global redis_objtry:while True:if not redis_obj.lock:time.sleep(1)continueif thread_lock:continue#data = json.loads(redis_obj.get_redis_data())data = ast.literal_eval(line.strip())   if data is None:time.sleep(1)continueevent_type = data["event_type"]# dnsif event_type.lower() == "dns":。。。。。。# icmpelif event_type.lower() == "icmp":。。。。。。except Exception as e:#logger.error("Get redis data thread error:{0}, {1}".format(e, e.__traceback__.tb_lineno))print("Get redis data thread error:{0}, {1}".format(e, e.__traceback__.tb_lineno))

Python操作redis(普通操作,连接池,封装)相关推荐

  1. java ftp封装_使用FTP连接池封装Java工具类

    使用FTP连接池封装工具类 背景 早前的思路是将FTP连接的管理(对象池功能)与FTP工具类(上传下载方法)在一个工程中实现,在工具类中调用是模板类提供的模板方法, 由模板方法与对象池打交道--初始时 ...

  2. springboot2整合redis使用lettuce连接池(解决lettuce连接池无效问题)

    lettuce客户端 Lettuce 和 Jedis 的都是连接Redis Server的客户端程序.Jedis在实现上是直连redis server,多线程环境下非线程安全(即多个线程对一个连接实例 ...

  3. python数据存储系列教程——python中redis数据库操作:连接、增删查改、多级路径

    全栈工程师开发手册 (作者:陈玓玏) python教程全解 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品 ...

  4. python(十):模块相关、操作Redis、操作Excel

    模块相关 1.导入模块的流程:import XXX 2.导入模块的实质:import一个模块的实质就是把这个python文件从头到尾执行一遍. 3.import模块查找模块的顺序 a.从当前目录下找 ...

  5. python操作redis set_Python操作redis学习系列之(集合)set,redis set详解 (六)

    #-*- coding: utf-8 -*- importredis r= redis.Redis(host="126.56.74.190",port=639,password=& ...

  6. Redis:Jedis连接池JedisPool

    目录 1.JedisPool的应用 1.1 基本应用 1.2 封装应用 1.3 增加超时重试 2.JedisPool配置 2.1 工厂配置 2.2 资源池配置 Jedis提供了连接池JedisPool ...

  7. Openresty Redis正确使用连接池(set_keepalive)

    最近在做一个openresty项目,每次访问需要通过openresty读取redis,判断是否可以允许访问. 问题: 如果每次访问就要与redis建立连接,当并发量大时,连接数会直接爆炸.影响性能和系 ...

  8. java操作redis的操作_Java操作redis简单示例

    第一:安装Redis 首先我们要安装Redis,就像我们操作数据库一样,在操作之前肯定要先创建好数据库的环境. Redis的下载可以百度一下,或者打开下面的下载链接: https://github.c ...

  9. Redis之jedis连接池

    jedis连接池的代码: public class JedisPoolTest {//Redis服务器IPprivate static String ADDR = "127.0.0.1&qu ...

  10. java redis集群连接池_(08)redis之使用java客户端、spring连接redis、redis集群示例...

    一.java代码连接 1.新建工程,并引入以下包: jedis-2.7.0.jar.commons-pool2-2.3.jar.junit-4.10.jar 2.单实例连接 /*** 单实例连接*/@ ...

最新文章

  1. const reference const
  2. 代码动态创建checkbox
  3. 八十六、从拓扑排序探究有向图
  4. 大牛书单 | 腾讯运维大咖陪你过724
  5. xubuntu19.10碰到initramfs终极解决方案
  6. 论文浅尝 | 一个模型解决所有问题:实体和事件的神经联合模型
  7. Socket一次Recv接受的字节有限制么?
  8. python发短信脚本_python脚本发送短信
  9. 全国首家百度大脑创新体验中心启动,中关村创业大街AI产业创新生态再升级...
  10. 【bzoj1593-预定旅馆】线段树维护连续区间
  11. ON_EVENT 报错
  12. openstack pike版本安装笔记6(dashboard组件,控制台)
  13. 书籍新增类别下拉框上下架
  14. 统计分析之参数检验与非参数检验、匹配样本与独立样本、2样本与K样本介绍----附SPSS操作指南
  15. 正式开始撰写《产品大师》,经验来自点滴的积累
  16. linux bugzilla安装包,Linux下Bugzilla的搭建
  17. kangle安装php7.0_搭建Kangle+EasyPanel对接SWAP IDC虚拟主机自助开通完整教程
  18. 论文笔记——Contextual Multi-armed Bandit Algorithm for Semiparametric(半参数) Reward Model
  19. Hadoop入门及官网教程
  20. 【DBC专题】-2-CAN Signal信号的Multiplexor多路复用在DBC中实现

热门文章

  1. 图像处理------图像细化
  2. 没有网也可以安装 Conda 环境
  3. Nifty File Lists for Mac(文件列表创建工具)
  4. linux启动脚本添加命令,Linux添加shell(.sh)脚本并添加定时任务
  5. java 上溯_java中Instrument的上溯造型
  6. html button跳转页面_Html
  7. anaconda moviepy_Anaconda和PyCharm的详细安装步骤~小白专用,手把手教学
  8. ThinkPHP6项目基操(20.实战部分 数据库操作返回值总结)
  9. Java笔记-按行读取文件及一次性全部读取数据
  10. C++设计模式-迭代器模式