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的队列效率高,并且简单易用。python

1.lpush

从左往右插入队列redis

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

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

4.rpush,lpop

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

5.llen

返回列表的长度code

相关文章
相关标签/搜索