redis 服務
1、安裝redis簡單操作對於和redis的互動, redis的類中提供了連線池的方式,我們可以通過連線池管理並操作redis。yum install redis
2、 python安裝支援模組
/opt/python2.7.13/bin/pip install redis
3、 和redis的簡單直接互動
in [1]: import redis
in [2]: rc = redis.redis(host='192.168.8.237',port=6379,decode_responses=true)
in [5]: rc.set('imoocc','jeson')
out[5]: true
in [7]: rc.get('imoocc')
out[7]: u'jeson'
1、連線池建立,利用連線池連線那麼 接下來介紹redis詳細專案使用的內容,大家不要覺得介紹的內容擴散太大。in [8]: connpool = redis.connectionpool(host='192.168.8.237',port=6379,decode_responses=true)
in [9]: rc = redis.redis(connection_pool=connpool)
in [10]: rc.set('imooccp','1234566')
out[10]: true
in [11]: rc.get('imooccp')
out[11]: u'1234566'
2、redis中db ,指定資料訪問的db
redis.conf中設定了db的數量,那麼redis的資料庫名也為0 到15,如下:
databases 16
指定使用那個資料庫名,我們通過如下的方式,就可以了:
in [29]: connpool = redis.connectionpool(host='192.168.8.237',port=6379,decode_responses=true,db=3)
in [30]: rc.set('test2','lllll')
out[30]: true
這樣就將資料庫寫入到db3了,如何驗證呢?我們從服務端來認證最直接,如下:
用redis-cli(redis自帶的工具)登入服務端,檢視寫入的key。
127.0.0.1:6379> select 3
ok127.0.0.1:6379[3]> keys * //檢視db 3這個庫下所有的key
1) "imooccc"
最近在作乙個任務系統,任務寫入是不定時的,我們需要用乙個程式去定期消費這些任務,必須是有先後順序的,而且是前乙個任務確認執行完後,才會去執行下乙個。
怎麼辦呢?用佇列啊,對吧!用什麼佇列,怎麼用?
介紹下為什麼要用redis來作訊息處理:
簡單說,redis支援兩種消費模式,一種發布-訂閱模式,及乙個訊息會被多個消費者處理(簡單說類似是乙個廣播訊息,所有人都會接收)。很明顯我得系統中不需要這麼用,系統裡邊就需要佇列模式,及先到的任務優先處理。那麼對佇列用什麼型別得資料庫結構來作呢?
先得聊聊list
list 這個資料型別,在python裡是乙個列表,在redis裡就是乙個有序佇列(或者說資料鏈表)了。
型別圖示如下:
大家看了這個結構就可以清楚了,我們可以利用list的資料介面模式,設計從左端和右端都可以對list進元素的同向處理(滿足佇列的特性先到先出)。
1、從左端插入元素
in [10]: rc.lpush('tasklist',1,2,3)
out[10]: 3l
列印輸出內容,如下:
in [17]: print(rc.lrange('tasklist',0,2))
[u'3', u'2', u'1']
類似的從左測插入的方法還有lpushx(name,value),區別只有當name存在才將value插入到最左邊。
2、從右邊插入元素
in [21]: rc.rpush('tasklist','5')
out[21]: 5l
in [22]: print(rc.lrange('tasklist',0,4))
[u'4', u'3', u'2', u'1', u'5']
3、從左邊取出元素怎麼取呢?
in [23]: rc.lpop("tasklist")
out[23]: u'4'
in [24]: rc.lpop("tasklist")
out[24]: u'3'
in [25]: print(rc.lrange('tasklist',0,4))
[u'2', u'1', u'5']
我們會看到從左側已經取出了兩個元素了。剩下來[u'2', u'1', u'5']
4、從右側呢?
當然就是rc.rpop()了
python對於redis的基礎使用和redis作為佇列的簡單使用就介紹這些,
python的工程裡邊如何更好封裝redis庫的連線和方法,
Python中redis的使用
windows下python中redis的使用 預設使用的埠號是6379。此時的redis服務就啟動了。可以在python等其他環境中對如redis進行讀寫操作。另外,該目錄下有乙個redis cli.exe,是redis的客戶端,直接啟動這個可以進行redis中key和value的修改。用sele...
python使用redis問題
setex key seconds value 可用版本 2.0.0 時間複雜度 o 1 將鍵 key 的值設定為 value 並將鍵 key 的生存時間設定為 seconds 秒鐘。如果鍵 key 已經存在,那麼 setex 命令將覆蓋已有的值。setex 命令的效果和以下兩個命令的效果類似 se...
Redis的Stream型別,高效地實現訊息佇列
redis5.0中發布了stream型別,乍一看,是流資料型別,第一反應是流式資料型別,例如儲存二進位制內容。但是錯了,redis提供的stream型別,類似於訊息佇列,用於生產和消費訊息,應該是乙個比較完美的訊息佇列mq的實現。下面就對stream型別和訊息佇列的問題進行說明。本文介紹了,基於st...