Python操作Redis


昨天,我們討論了python如何連接redis。今天我們要學習如何用python操作redis的數據。

這里,再補充一下。redis是key-value形式的數據庫。可以存儲多種格式的數據。

今天,我們就是嘗試下,這些常用的api。

1.設置數據:

r = redis.Redis(host='127.0.0.1', port=6379)

#若是key存在,就修改,不存在,就添加
r.set('zcx', '123999')

#time:是指緩存過期時間,單位秒

r.setex(key,value, time)

#time:是指緩存過期時間,單位秒

r.setex(key,value, time)

#time:是指緩存過期時間,單位毫秒

r.psetex(key,value, time)

這兩個,都是批量設置

r.mset(zcx='123', zcx1='456')
r.mget({"zcx": '888', "zcx1": '999'})

2.獲取數據

get(name)

批量獲取:

r.mget("zcx", "zcx1")
li = ["zcx", "zcx1"]
r.mget(li)

3.獲取原來的值並設置新的值:注意get 和set拼起來的

getset(name, value)

4.按數據內容的長度取值

getrange(key, start, end)

print(r.getrange('zcx', 0, 1))

5.根據key,在對應的值的指定位置插入值

setrange(key, offset, value)

6.對2進制進行位操作

setbit(key, offset, value)

7.獲取2進制某一位的值

getbit(name, offset)

8.獲取2進制某一段的值

bitcount(key, start=None, end=None)

9.返回對應數據的長度

strlen(key)

10.對某個數進行加法運算

incr(self, key, amount=1)

r.incr('zcx',1)
print(r.get('zcx'))
r.incr('zcx',5)
print(r.get('zcx'))

輸出:

b'124'

b'129'

按后面的小數進行增長

incrbyfloat(self, name, amount=1.0)

與incr的功能相反

decr(self, key, amount=1)

11.為name追加內容

append(key, value)

12.存取字典

r.hset("zcx", "zcx1", "8888")
print(r.hget("zcx", "zcx1"))

#取所有的字典

print(r.hgetall("zcx"))
輸出:

b'8888'

{b'zcx1': b'8888'}

13.批量存取字典

dic = {"zcx": "111111", "zcx1": "2222222"}
r.hmset("my", dic)
print(r.hget("my", "zcx"))
print(r.hgetall("my"))

test=["zcx","zcx1"]
print(r.hmget("my",test))
print(r.hmget("my","zcx","zcx1"))

14.獲取字典的屬性和對應值:長度,個數

dic = {"zcx": "1111", "zcx1": "2222"}
r.hmset("my", dic)
#獲取長度
print(r.hlen("my"))
#獲取所有key
print(r.hkeys("my"))
#獲取所有值
print(r.hvals("my"))

15.判斷是否存在

print(r.hexists('my', 'zcx'))

輸出:

True

16.刪除字典的key

hdel('my','zcx')

17.列表操作

lpush(key,val)

 

#每個新的元素都添加到列表的最右邊

rpush(key,val)

#在key對應的list中添加元素,只有key已經存在時,值添加到列表的最左/右邊

lpushx(key,value)

rpushx(key,value)

llen(key)#求長度

r.linsert("my","BEFORE","55555","66666")#在前后插入值

r.lset(key, index, value)#對某個位置的數據重新復制

r.lrem(key, value,position)#position刪除指定位置的值。position>0從左往右數位置,否則從右向左

lpop(key)#移除元素

lindex(key, index)#根據索引取元素

lrange(key, start, end)#根據索引取范圍數據

ltrim(key, start, end)#移除列表內沒有在該索引之內的值

rpoplpush(src, target)#合並列表。從src取出最右邊的元素,同時將其添加至target的最左邊

blpop(key, timeout)#移除數據

18.Set集合操作

Set集合就是不允許重復元素的列表

sadd(key,value)#設置值

smembers(key)#獲取值

scard(key)#獲取長度

sdiff(keys, *args)#取差

sdiffstore(target, keys, *args)#把sdiff獲取的值加入到target中

sinter(key, *args)#取並

sinterstore(target, keys, *args)#獲取多個key對應集合的並集,在加入到target中

sismember(key, value)#檢查元素

smove(src, target, value)#把某個元素從一個集合中移動到另外一個集合

spop(key)#移除

srandmember(key, num)#隨機取值,num是長度

srem(key, values)#刪除key中的某些值

sunion(keys, *args)#獲取多個keys對應的集合的並集

sunionstore(target,keys, *args)#sunion的結果存入target

zadd(key, *args, **kwargs)#有序集合

zcard(key)#有序集合的元素

zcount(key, min, max)#有序集合的元素在min和max范圍中的數

zincrby(key, value, amount)

# 按照索引范圍獲取key對應的有序集合的元素
result=r.zrange("my",0,1,desc=False,withscores=True,score_cast_func=int)
print(result
'''參數:
key 
start 有序集合索引起始位置
end 有序集合索引結束位置
desc 排序規則,默認按照分數從小到大排序
withscores 是否獲取元素的分數,默認只獲取元素的值
score_cast_func 對分數進行數據轉換的函數'''

zrevrange(key, start, end, withscores=False, score_cast_func=float)#同zrange,集合是從大到小排序

zrank(key, value)、zrevrank(key, value)#獲取元素所在位置

zscore(key, value)

zrem(key, val)#刪除key對應的有序集合中值是val成員

zremrangebyrank(key,min, max)#根據范圍刪除

zremrangebyscore(key, min, max)

zinterstore(target, keys, aggregate=None)#合並集合。進行笛卡兒積運算

zunionstore(target, keys, aggregate=None)#合並集合放入target

delete(*names)#刪除

exists(name)

keys(pattern='*')#模式匹配

expire(key,time)#設置超期時間

rename(a, b)

move(key, db))#將可以移動到另一個db下

randomkey()#生成隨機key

type(key)#獲取可以對應的類型

 

以上就是python操作redis的部分API。其實,在實際應用中,能用到三分之一就不錯了。但是,一定要了解提供了那些API,將來在用的時候,才知道從哪方面去思考。


免責聲明!

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



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