眾所皆知redis的增刪改查指令十分簡陋,我們如何在python中像操作自身的list一樣操作redis的list呢?
比如切片賦值:
a = [1,2,3,4]
b = [6,7,8,9]
a[:3:2] = b[:3:2]
print(a)
下面開始準備工作
在redis中這麼乙個list,key為testlist2
127.0.0.1:6379> lrange testlist2 0 5
1) "feng"
2) "5"
3) "wei"
4) "tu"
5) "test"
import redis
redisdb = redis.strictredis()
class redislist:
def __init__(self, rediskey):
self.rediskey = rediskey
redisdb.rpush(self.rediskey, item)
def pop(self):
return redisdb.rpop(self.rediskey).decode("utf8")
def clear(self):
redisdb.delete(self.rediskey)
def __len__(self):
return redisdb.llen(self.rediskey)
def __getitem__(self, index):
if isinstance(index, int):
if index >= self.__len__():
raise stopiteration()
return redisdb.lindex(self.rediskey, index).decode("utf8")
elif isinstance(index, slice):
return list(map(lambda x: x.decode("utf8"), redisdb.lrange(self.rediskey, 0, self.__len__())[index] ))
def __setitem__(self, index, value):
if isinstance(index, int):
if index >= self.__len__():
raise exception("over range list")
redisdb.lset(self.rediskey, index, value)
elif isinstance(index, slice):
for i, j in enumerate(range(0, self.__len__())[index]):
redisdb.lset(self.rediskey, j, value[i])
def __str__(self):
return str(self.__getitem__(slice(none, none, none)))
m = redislist("testlist2")
print(m)
for i in m:
print(i)
print(tuple(m))
m[::2] = [1,1,1]
print(m)
輸出:
['feng', '5', 'wei', 'tu', 'test']
feng
5wei
tutest
('feng', '5', 'wei', 'tu', 'test')
['1', '5', '1', 'tu', '1']
檢視redis ,可見切片賦值走通了
127.0.0.1:6379> lrange testlist2 0 5
1) "1"
2) "5"
3) "1"
4) "tu"
5) "1"
備註:
由於redis只支援五種資料型別:string(字串)、hash(雜湊)、list(列表)、set(集合)及zset(sorted set:有序集合),因此 int 和 float 等數字型別存入redis時會被轉成 string
python對redis的增刪改查
一.有序集合參考下面文章 1 zadd key score1 member1 score2 member2 向有序集合新增乙個或多個成員,或者更新已存在成員的分數 2 zcard key 獲取有序集合的成員數 3 zcount key min max 計算在有序集合中指定區間分數的成員數 4 zin...
python 使用paramiko操作linux
可以利用paramiko模組寫伺服器指令碼,在本地執行,比如持續更新 檢視日誌,批量配置集群等。paramiko 主要包含sshclient和sftpclient兩個元件 ssh服務會話的表示,通常用來執行命令,主要有connect exec command load system host key...
Redis06 Redis五大資料型別 list
單鍵多值 redis列表是簡單的字串列表,按照插入順序排序,可以新增左邊 右邊 底層實際上是乙個雙向鍊錶,對兩端的操作效能好,但是通過索引下標的操作中間節點效能較差 從左邊 右邊插入乙個或多個值 lpop rpop 從左邊 右邊吐出乙個值 值在鍵在,值無鍵亡 rpoplpush 從列表右邊吐出乙個值...