在每次使用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
回傳串列的長度
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/35503.html
標籤:NoSQL
上一篇:Redis 實作美團的外賣派單系統“附近的人”篩選實戰原理分析
下一篇:redis系列之------物件
