使用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 是原子性操作。

#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"))



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM