python通过连接池连接redis,操作redis队列

在每次使用redis都进行连接的话会拉低redis的效率,都知道redis是基于内存的数据库,效率贼高,所以每次进行连接比真正使用消耗的资源和时间还多。所以为了节省资源,减少多次连接损耗,连接池的作用相当于缓存了多个客户端与redis服务端的连接,当有新的客户端来进行连接时,此时,只需要去连接池获取一个连接即可,实际上连接池就是把一个连接共享给多个客户端,可以说是广播,要用的话就去接收。

#-*-coding:utf-8-*-import redis# 连接池连接使用,节省了每次连接用的时间conn_pool = redis.ConnectionPool(host='localhost',port=6379)# 第一个客户端访问re_pool = redis.Redis(connection_pool=conn_pool)# 第二个客户端访问re_pool2 = redis.Redis(connection_pool=conn_pool)# 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']))

redis队列操作redis-MQ

redis的队列效率高,而且简单易用。

1.lpush

从左往右插入队列

2.lrange

查看插入的数据
import redis
import json

# redis连接re_queue = redis.Redis(host='localhost', port=6379 )# 顺序插入五条数据到redis队列,sort参数是用来验证弹出的顺序num = 0for i in range(0, 5):    num = num + 1    # params info    params_dict = {"channel":"facebook", "operate":"publish", "sort":num}    # 从左往右入队到redis    re_queue.lpush("params_info", json.dumps(params_dict))# 查看目标队列数据result = re_queue.lrange("params_info", 0, 10)print(result)# 结果输出# [b'{"channel": "facebook", "operate": "publish", "sort": 5}', b'{"channel": "facebook", "operate": "publish", "sort": 4}', b'{"channel": "facebook", "operate": "publish", "sort": 3}',                             b'{"channel": "facebook", "operate": "publish", "sort": 2}', b'{"channel": "facebook", "operate": "publish", "sort": 1}']

3.rpop

从左往右,第一个进的肯定是在最右边,要处理第一个,就要从右往左弹出

4.rpush,lpop

rpush从右往左入队,第一个在最左边,lpop从左边弹出

5.llen

返回列表的长度

(0)

相关推荐

  • 说说分布式爬虫

    我们大多时候玩的爬虫 都是运行在自己的机子 之前 我们为了提高爬虫的效率 说过多进程相关的 今天 小帅b想跟你聊聊 分布式爬虫 那么接下来就是 学习 Python 的正确姿势 在此之前 我们先来了解一 ...

  • 说说Python中贪婪和非贪婪匹配?

    公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助!小猿会从最基础的面试题开始,每 ...

  • Scrapy和scrapy-redis有什么区别?Python入门!

    Python工程师的就业方向有很多,其中包含Python爬虫开发,它是非常受欢迎的就业岗位,也是很多企业热招的岗位.那么你知道面试Python爬虫开发工程师的时候会问及哪些问题吗?老男孩教育为大家提供 ...

  • 我整来了几台服务器,就是为了给你演示一下分布式爬虫的整个过程

    一般情况下 scrapy是这样的 可以看到 1.调度器 Scheduler  会调度 Requests 队列中的请求 2.然后将每个请求交给下载器 Downloader 下载 3.这时候就会得到相应的 ...

  • 基于golang实现的redis连接池

    基于golang实现的redis连接池 代码篇: package mainimport ( "fmt" "github.com/garyburd/redigo/redis ...

  • 第75天: Python 操作 Redis 数据库介绍

    Redis 作为常用的 NoSql 数据库,主要用于缓存数据,提高数据读取效率,那在 Python 中应该如果连接和操作 Redis 呢?今天就为大概简单介绍下,在 Python 中操作 Redis ...

  • 为什么 Python 的 f-string 可以连接字符串与数字?

    本文出自"Python为什么"系列,归档在 Github 上:https://github.com/chinesehuazhou/python-whydo 毫无疑问,Python ...

  • 从连接池到内存池

    注:内容微调,修改标题,让题文匹配. 如果将互联网应用比喻成冲浪的话, 可能需要先学会在"池"中游泳. 引子 AI赋能万物,老码农的伙伴们也曾经开发了一个基于图数据库的知识问答系统 ...

  • dotNetCore操作Redis(含CentOS7哨兵模式部署)

    现在说到使用缓存中间件基本就是 Redis 了,通常开发环境或测试环境部署一个单机版就可以运行了,但要上生产环境还需要进行高可用的方式来部署,本文说说在 CentOS7 中 Redis 高可用的部署以 ...

  • Go操作Redis实战

    目录 安装Redis客户端 连接redis 基本指令 Keys():根据正则获取keys Type():获取key对应值得类型 Del():删除缓存项 Exists():检测缓存项是否存在 Expir ...

  • Mybatis数据源结构解析之连接池

    对于 ORM 框架而言,数据源的组织是一个非常重要的一部分,这直接影响到框架的性能问题.本文将通过对 MyBatis 框架的数据源结构进行详尽的分析,找出什么时候创建 Connection ,并且深入 ...

  • Jedis连接池

    jedis是官方首选的java客户端开发包 Redis不仅是使用命令来操作,现在基本上主流的语言都有客户端支持,比如java.C.C#.C++.php.Node.js.Go等. 在官方网站里列一些Ja ...

  • .NET连接池的问题详解

    NET 连接池救生员 防止可淹没应用程序的池溢出 William Vaughn 大多数 ADO.NET 数据提供程序使用连接池,以提高围绕 Microsoft 断开连接的 .NET 结构构建的应用程序 ...