Redis 操作之String操作
String操作阻星,redis中的String在在內(nèi)存中按照一個(gè)name對應(yīng)一個(gè)value來存儲(chǔ)侵俗。
set(name, value, ex=None, px=None, nx=False, xx=False)
在Redis中設(shè)置值棱貌,默認(rèn)忘闻,不存在則創(chuàng)建箍邮,存在則修改
參數(shù):
ex棒动,過期時(shí)間(秒)
px糙申,過期時(shí)間(毫秒)
nx,如果設(shè)置為True船惨,則只有name不存在時(shí)柜裸,當(dāng)前set操作才執(zhí)行,值存在,就修改不了粱锐,執(zhí)行沒效果
xx疙挺,如果設(shè)置為True,則只有name存在時(shí)怜浅,當(dāng)前set操作才執(zhí)行铐然,值存在才能修改蔬崩,值不存在,不會(huì)設(shè)置新值
setnx(name, value)
設(shè)置值搀暑,只有name不存在時(shí)沥阳,執(zhí)行設(shè)置操作(添加),如果存在,不會(huì)修改
setex(name, value, time)
# 設(shè)置值
# 參數(shù):
# time自点,過期時(shí)間(數(shù)字秒 或 timedelta對象)
psetex(name, time_ms, value)
# 設(shè)置值
# 參數(shù):
# time_ms桐罕,過期時(shí)間(數(shù)字毫秒 或 timedelta對象
mset(*args, **kwargs)
批量設(shè)置值
如:
mset(k1='v1', k2='v2')
或
mget({'k1': 'v1', 'k2': 'v2'})
get(name)
獲取值
mget(keys, *args)
批量獲取
如:
mget('k1', 'k2')
或
r.mget(['k3', 'k4'])
getset(name, value)
設(shè)置新值并獲取原來的值
getrange(key, start, end)
# 獲取子序列(根據(jù)字節(jié)獲取,非字符)
# 參數(shù):
# name桂敛,Redis 的 name
# start功炮,起始位置(字節(jié))
# end,結(jié)束位置(字節(jié))
# 如: "劉清政" 术唬,0-3表示 "劉"
setrange(name, offset, value)
# 修改字符串內(nèi)容薪伏,從指定字符串索引開始向后替換(新值太長時(shí),則向后添加)
# 參數(shù):
# offset粗仓,字符串的索引毅该,字節(jié)(一個(gè)漢字三個(gè)字節(jié))
# value,要設(shè)置的值
setbit(name, offset, value)
# 對name對應(yīng)值的二進(jìn)制表示的位進(jìn)行操作
# 參數(shù):
# name潦牛,redis的name
# offset,位的索引(將值變換成二進(jìn)制后再進(jìn)行索引)
# value挡育,值只能是 1 或 0
# 注:如果在Redis中有一個(gè)對應(yīng): n1 = "foo"巴碗,
那么字符串foo的二進(jìn)制表示為:01100110 01101111 01101111
所以,如果執(zhí)行 setbit('n1', 7, 1)即寒,則就會(huì)將第7位設(shè)置為1橡淆,
那么最終二進(jìn)制則變成 01100111 01101111 01101111,即:"goo"
getbit(name, offset)
# 獲取name對應(yīng)的值的二進(jìn)制表示中的某位的值 (0或1)
bitcount(key, start=None, end=None)
# 獲取name對應(yīng)的值的二進(jìn)制表示中 1 的個(gè)數(shù)
# 參數(shù):
# key母赵,Redis的name
# start逸爵,位起始位置
# end,位結(jié)束位置
bitop(operation, dest, *keys)
# 獲取多個(gè)值凹嘲,并將值做位運(yùn)算师倔,將最后的結(jié)果保存至新的name對應(yīng)的值
# 參數(shù):
# operation,AND(并) 、 OR(或) 周蹭、 NOT(非) 趋艘、 XOR(異或)
# dest, 新的Redis的name
# *keys,要查找的Redis的name
# 如:
bitop("AND", 'new_name', 'n1', 'n2', 'n3')
# 獲取Redis中n1,n2,n3對應(yīng)的值,然后講所有的值做位運(yùn)算(求并集)凶朗,然后將結(jié)果保存 new_name 對應(yīng)的值中
strlen(name)
# 返回name對應(yīng)值的字節(jié)長度(一個(gè)漢字3個(gè)字節(jié))
incr(self, name, amount=1)
# 自增 name對應(yīng)的值瓷胧,當(dāng)name不存在時(shí),則創(chuàng)建name=amount棚愤,否則搓萧,則自增。
# 參數(shù):
# name,Redis的name
# amount,自增數(shù)(必須是整數(shù))
# 注:同incrby[![復(fù)制代碼]
incrbyfloat(self, name, amount=1.0)
# 自增 name對應(yīng)的值,當(dāng)name不存在時(shí)瘸洛,則創(chuàng)建name=amount揍移,否則,則自增货矮。
# 參數(shù):
# name,Redis的name
# amount,自增數(shù)(浮點(diǎn)型)
decr(self, name, amount=1)
# 自減 name對應(yīng)的值羊精,當(dāng)name不存在時(shí),則創(chuàng)建name=amount囚玫,否則喧锦,則自減。
# 參數(shù):
# name,Redis的name
# amount,自減數(shù)(整數(shù))
append(key, value)
# 在redis name對應(yīng)的值后面追加內(nèi)容
# 參數(shù):
key, redis的name
value, 要追加的字符串