• 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 = 0
    for 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

    返回列表的长度

  • 相关阅读:
    Ubuntu下RabbitMq 安装与运行
    web_api所需包
    Ubuntu16.04下安装python3.6.4详细步骤
    JavaScript
    css
    html
    MySQL
    day4 函数
    day3 字典,集合,文件
    day2
  • 原文地址:https://www.cnblogs.com/vinic-xxm/p/11782325.html
Copyright © 2020-2023  润新知