使用python操作redis(管道)

一、redis連接

redis提供兩個類Redis和StrictRedis用於實現Redis的命令,StrictRedis用於實現大部分官方的命令,並使用官方的語法和命令,Redis是StrictRedis的子類,用於向後兼容舊版本的redis-py。

redis連接實例是線程安全的,可以直接將redis連接實例設置爲一個全局變量,直接使用。如果需要另一個Redis實例(or Redis數據庫)時,就需要重新創建redis連接實例來獲取一個新的連接。

安裝redis

pip install redis

連接redis,加上decode_responses=True,寫入的鍵值對中的value爲str類型,不加這個參數寫入的則爲字節類型。

二、連接池連接

redis-py使用connection pool來管理對一個redis server的所有連接,避免每次建立、釋放連接的開銷。默認,每個Redis實例都會維護一個自己的連接池。可以直接建立一個連接池,然後作爲參數Redis,這樣就可以實現多個Redis實例共享一個連接池

連接池:redis_pool.py

import redis
from redis_pool import POOl
conn = redis.Redis(connection_pool=POOl)
conn.set('name', 'LinWOW')
print(conn.get('name'))

三、redis-py 操作redis

python操作redis的命令和命令行幾乎一致,除了del,因爲和關鍵字重疊,所以用delete

1、字符串類型操作:

set----鍵key

con.set(‘key’,‘values’)

get—獲取數值

con.get(‘com’)

append — 追加

con.append(‘keys’,‘values’)

delete—刪除

con.delete(‘keys’)

2、List類型:

rpush 、lpush----添加數據

con.rpush(‘keys’,‘values’)

con.lpush(‘keys’,‘values’)

lrange—查看數據

con.lrange(‘list’,0,11)

lset—修改數據

con.lset(‘list_F’,1,‘Fyn’)—返回布爾值

rpop ---- 隨機刪除一個數據

con.rpop(‘keys’)

lrem ---- 指定刪除一個數據時

con.lrem(‘list_f’,0,‘okl’)

3、Hash類型

hmget — 添加多條數據,也可插入單條數據

以字典的形式插入

con.hmste(‘keys’,{‘name’:’'age})#插入結果返回布爾值

hget , hgetall , hvals,hkeys查看數據

con.hget(‘ok’,‘name’)

con.hgetall(‘ok’)#結果返回字典

con.hvals(‘ok’)#獲取所有的鍵值

con.hkeys(‘ok’)#獲取所有的鍵

hdel 、 del----刪除某個字段,刪除整個hash

con.hdel(‘ok’,age)#指定刪除某個字段 ,成功的話返回1,否則返回0

con.del(‘ok’)#刪除整個hash

4、set

sadd—添加數據

con.sadd(‘mk’,‘oi’.‘Hwelo’)

smembers ---- 查看所有數據

con.smembers(‘mk’)

spop—隨機刪除一個元素

con.spop(‘con.spop(‘mk’)’)

srem— 指定刪除某個元素

con.srem(‘mk’,‘oi’)

5、sorted set

zadd—添加數據

con.zadd(‘set_f’,{‘name’:1.1,‘age’:2,‘sex’:3})

zrange ---- 查詢數據

con.zrange(‘set_f’,0,11)

zrem —指定刪除某個元素

con.zrem(‘set_f’,‘age’)

四、redis-py管道操作 piplines

管道是redis的子類,它支持在一個請求中款衝多個命令到服務器

管道使redis的讀寫速度更加的快速。秒級取值1000+的數據。

並且使用pipline實現一次請求指定多個命令,並且默認情況下一次pipline 是原子性操作。

'''
遇到問題沒人解答?小編創建了一個Python學習交流QQ羣:579817333 
尋找有志同道合的小夥伴,互幫互助,羣裏還有不錯的視頻學習教程和PDF電子書!
'''
#1、創建一個管道
pipe = con.pipeline()

#緩衝多個命令
pipe.keys('*')
pipe.set('name','Mkl')

#執行命令
res = pipe.execute()#返回列表
print(res[0])
print(res[1])

管道的命令可以寫在一起,如:

pipe.set('hello', 'redis').sadd('faz', 'baz').incr('num').execute()
print(r.get("name"))
print(r.get("role"))
print(r.get("num"))
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章