昨天廊勃,我們討論了python如何連接redis。今天我們要學(xué)習(xí)如何用python操作redis的數(shù)據(jù)经窖。
這里坡垫,再補(bǔ)充一下。redis是key-value形式的數(shù)據(jù)庫画侣「鹋埃可以存儲(chǔ)多種格式的數(shù)據(jù)。
今天棉钧,我們就是嘗試下屿脐,這些常用的api涕蚤。
1.設(shè)置數(shù)據(jù):
r = redis.Redis(host='127.0.0.1', port=6379)
#若是key存在,就修改的诵,不存在万栅,就添加
r.set('zcx', '123999')
#time:是指緩存過期時(shí)間,單位秒
r.setex(key,value, time)
#time:是指緩存過期時(shí)間西疤,單位秒
r.setex(key,value, time)
#time:是指緩存過期時(shí)間烦粒,單位毫秒
r.psetex(key,value, time)
這兩個(gè),都是批量設(shè)置
r.mset(zcx='123', zcx1='456')
r.mget({"zcx": '888', "zcx1": '999'})
2.獲取數(shù)據(jù)
get(name)
批量獲却蕖:
r.mget("zcx", "zcx1")
li = ["zcx", "zcx1"]
r.mget(li)
3.獲取原來的值并設(shè)置新的值:注意get 和set拼起來的
getset(name, value)
4.按數(shù)據(jù)內(nèi)容的長度取值
getrange(key, start, end)
print(r.getrange('zcx', 0, 1))
5.根據(jù)key扰她,在對應(yīng)的值的指定位置插入值
setrange(key, offset, value)
6.對2進(jìn)制進(jìn)行位操作
setbit(key, offset, value)
7.獲取2進(jìn)制某一位的值
getbit(name, offset)
8.獲取2進(jìn)制某一段的值
bitcount(key, start=None, end=None)
9.返回對應(yīng)數(shù)據(jù)的長度
strlen(key)
10.對某個(gè)數(shù)進(jìn)行加法運(yùn)算
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'
按后面的小數(shù)進(jìn)行增長
incrbyfloat(self, name, amount=1.0)
與incr的功能相反
decr(self, key, amount=1)
11.為name追加內(nèi)容
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.獲取字典的屬性和對應(yīng)值:長度,個(gè)數(shù)
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)
#每個(gè)新的元素都添加到列表的最右邊
rpush(key,val)
#在key對應(yīng)的list中添加元素芭碍,只有key已經(jīng)存在時(shí)徒役,值添加到列表的最左/右邊
lpushx(key,value)
rpushx(key,value)
llen(key)#求長度
r.linsert("my","BEFORE","55555","66666")#在前后插入值
r.lset(key, index, value)#對某個(gè)位置的數(shù)據(jù)重新復(fù)制
r.lrem(key, value,position)#position刪除指定位置的值。position>0從左往右數(shù)位置窖壕,否則從右向左
lpop(key)#移除元素
lindex(key, index)#根據(jù)索引取元素
lrange(key, start, end)#根據(jù)索引取范圍數(shù)據(jù)
ltrim(key, start, end)#移除列表內(nèi)沒有在該索引之內(nèi)的值
rpoplpush(src, target)#合并列表忧勿。從src取出最右邊的元素,同時(shí)將其添加至target的最左邊
blpop(key, timeout)#移除數(shù)據(jù)
18.Set集合操作
Set集合就是不允許重復(fù)元素的列表
sadd(key,value)#設(shè)置值
smembers(key)#獲取值
scard(key)#獲取長度
sdiff(keys, *args)#取差
sdiffstore(target, keys, *args)#把sdiff獲取的值加入到target中
sinter(key, *args)#取并
sinterstore(target, keys, *args)#獲取多個(gè)key對應(yīng)集合的并集瞻讽,在加入到target中
sismember(key, value)#檢查元素
smove(src, target, value)#把某個(gè)元素從一個(gè)集合中移動(dòng)到另外一個(gè)集合
spop(key)#移除
srandmember(key, num)#隨機(jī)取值鸳吸,num是長度
srem(key, values)#刪除key中的某些值
sunion(keys, *args)#獲取多個(gè)keys對應(yīng)的集合的并集
sunionstore(target,keys, *args)#sunion的結(jié)果存入target
zadd(key, *args, **kwargs)#有序集合
zcard(key)#有序集合的元素
zcount(key, min, max)#有序集合的元素在min和max范圍中的數(shù)
zincrby(key, value, amount)
# 按照索引范圍獲取key對應(yīng)的有序集合的元素
result=r.zrange("my",0,1,desc=False,withscores=True,score_cast_func=int)
print(result
'''參數(shù):
key
start 有序集合索引起始位置
end 有序集合索引結(jié)束位置
desc 排序規(guī)則,默認(rèn)按照分?jǐn)?shù)從小到大排序
withscores 是否獲取元素的分?jǐn)?shù)速勇,默認(rèn)只獲取元素的值
score_cast_func 對分?jǐn)?shù)進(jìn)行數(shù)據(jù)轉(zhuǎn)換的函數(shù)'''
zrevrange(key, start, end, withscores=False, score_cast_func=float)#同zrange晌砾,集合是從大到小排序
zrank(key, value)、zrevrank(key, value)#獲取元素所在位置
zscore(key, value)
zrem(key, val)#刪除key對應(yīng)的有序集合中值是val成員
zremrangebyrank(key,min, max)#根據(jù)范圍刪除
zremrangebyscore(key, min, max)
zinterstore(target, keys, aggregate=None)#合并集合烦磁。進(jìn)行笛卡兒積運(yùn)算
zunionstore(target, keys, aggregate=None)#合并集合放入target
delete(*names)#刪除
exists(name)
keys(pattern='*')#模式匹配
expire(key,time)#設(shè)置超期時(shí)間
rename(a, b)
move(key, db))#將可以移動(dòng)到另一個(gè)db下
randomkey()#生成隨機(jī)key
type(key)#獲取可以對應(yīng)的類型
以上就是python操作redis的部分API养匈。其實(shí),在實(shí)際應(yīng)用中个初,能用到三分之一就不錯(cuò)了乖寒。但是猴蹂,一定要了解提供了那些API院溺,將來在用的時(shí)候,才知道從哪方面去思考磅轻。