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))輸出:
b124
b129
按後面的小數進行增長
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"))
輸出:b8888
{bzcx1: b8888}
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"))#獲取所有keyprint(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,將來在用的時候,才知道從哪方面去思考。
推薦閱讀:
※Python數據處理:關於Pandas你需要知道的都在這裡了
※機器學習(入門):邏輯回歸
※Python的1001種騷操作——基礎篇(0)
※Python之websocket web模擬tail -F。
※如何學習SDN中的編程部分(python)?