­

python操作Redis方法速記

redis有5種數據結構,分別如下:
5種數據結構

python語言對5種數據結構的增刪改查





全局函數

redis 連接

import redis

pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True)
r = redis.Redis(connection_pool=pool)

redis 取出的結果默認是位元組,可以設定 decode_responses=True 改成字符串
redis python操作

一、字符串

創建

1.設置單個鍵值對
set(name, value, ex=None, px=None, nx=False, xx=False)
ex:過期時間(秒),時間到了後redis會自動刪除
px:過期時間(毫秒),時間到了後redis會自動刪除。ex、px二選一即可
nx:如果設置為True,則只有name不存在時,當前set操作才執行
xx:如果設置為True,則只有name存在時,當前set操作才執行

2.設置多個值
value_dict = {‘num’: 123, ‘str’: 456}
mset(value_dict)

3.不存在鍵更新value,存在則不變
setnx(name, value)

4.設置value,並添加有效期
setex(name, time, value)
r.setex(‘name’, 1, ‘James’) 設置name=James,並且有效期為1s

修改

1.value後面追加
append(key, value)

查詢

1.獲取單個值,返回字符串
get(key)

2.獲取多個值,返回列表
mget([‘num’, ‘str’])

3.給已有的鍵設置新值,並返回原有的值。返回字符串
getset(name, value)
當所給的鍵不存在時,會設置新值,但返回值是None

4.獲取value的長度,返回整型
strlen(key)

5.獲取value從start到end的子字符串,返回字符串
getrange(key, start, end)

二、列表

redis中,一個鍵對應一個列表

增加:

1.在列表右邊添加值。key不存在時創建一個新列表,返回列表的長度
redis.rpush(key, 1,2,3,4)
可以添加單個,可以添加多個。當有多個值時,將值依次添加到最右邊
arr = [5,4,3,2,1]
r.rpush(key, *arr)

2.在列表左邊添加,key不存在時創建一個新列表,返回列表的長度
r.lpush(key, 1,2,3,4)
當有多個值時,將值依次添加到最左邊。

3.在列表中間插入新值
linsert(name, where, refvalue, value)

name:鍵名
where:位置,前面(BEFORE)或後面(AFTER)
refvalue:指定哪個值的前後插入
value:插入的新值

返回值:插入後列表的長度,若返回-1,則refvalue不存在

r.linsert(key, ‘after’, 6, ‘new_value’)

4.key存在時插入。lpushx添加到左邊,rpushx添加到右邊。返回列表長度
lpushx(key, value) 添加到左邊
rpushx(key, value) 添加到右邊
只有鍵存在時,才添加。若鍵不存在則不添加,也不新創建列表

修改

1.列表中通過索引賦值,返回True或False
lset(key, index, value)

刪除

1.刪除左邊第一個值,返回刪除的值
lpop(name)

2.刪除右邊第一個值,返回刪除的值
rpop(name)

3.刪除列表中範圍之外的所有值,返回刪除的值
ltrim(key, start, end)

4.刪除列表中N的相同的值,返回刪除的數量
lrem(name, num, value)
name:鍵名
value:需刪除的值
num:刪除的個數 整數表示從左往右 負數表示從右往左 例如:2 -2
返回值:返回刪除的個數

r.lrem(‘arr’, 10, ‘delete_name’)

5.刪除並返回列表中首個元素,列表為空則一直阻塞
blpop(key, timeout=n)

6.刪除並返回列表中尾元素,如果列表為空則一直阻塞
brpop(key, timeout=n)

查詢

1.列表中獲取一段數據,返回列表
lrange(name, start, end)

2.通過索引獲取列表值,返回單個元素
lindex(key, index)

3.獲取鍵對應列表的長度,返回數值
llen(key)

三、字典

一個name對應一個字典,類似於字典名字。字典中是key->value

增加

1.單個添加,返回添加的數量
hset(name, key, value)
key存在則修改,否則就是添加

2.批量添加,返回True或False
mapping = {‘age’:10, ‘tel’:123}
redis.hmset(name, mapping)

3.如果鍵不存在添加,否則不處理。返回創建字典長度
hsetnx(name, key, value)

刪除

刪除鍵值對,返回刪除的個數
hdel(name, key)
可刪除多個
hdel(name, *keys)

修改

hset(name, key, value)
key存在則修改,否則就是添加

查詢

獲取所有鍵值對,返回一個字典
hgetall(name)

獲取所有的key,返回列表
hkeys(name)

獲取所有value,返回列表
hvals(name)

獲取指定key的值,返回元素
hget(name, key)

獲取多個鍵值對,返回列表
keys = [‘age’, ‘tel’]
r.hmget(name, [keys])

獲取鍵值對個數,返回數字
hlen(name)

查詢哈希中是否有某個key,返回True或False
hexists(name, key)

四、集合

集合中的元素不重複,一般用於過濾元素

增,返回添加的數量

沒有key則創建集合併添加所有元素;有key則直接添加到結合中
sadd(name, value1,value2,value3)

刪,返回刪除元素的個數

1.刪除集合中一個或多個元素
srem(key,values)

srem(key, value1, value2, value3)

2.隨機刪除並返回集合中元素,返回元素
spop(key)

3.將一個集合移動到另一個集合
smove(src, dst, value)

1.返回集合中所有元素,返回集合
smemebers(key)

2.返回集合中元素的個數,返回個數
scard(key)

3.隨機獲取n個元素,返回列表
srandmember(name, number=None)
name:鍵名
number:一個或N個,默認返回一個。若返回N個,則返回List類型
返回值:返回一個值或一個列表

r.srandmemeber(key, number=45)

4.判斷某個值是否在集合中,返回True或False
sismember(key, value)

5.差集,返回集合
sdiff(key1, key2)

6.交集,返回集合
sinter(key1, key2)

7.並集,返回集合
sunion(key1, key2)

五、有序集合

有序集合比集合多了一個分數的字段,可對分數升序降序

增,返回增加元素個數

set_dict = {‘one’: 1, ‘two’:9, ‘three’: 12}
r.zadd(key, set_dict)

刪,返回刪除元素的個數

1.刪除有序集合中某個或多個值
zrem(key, *values)
返回刪除的個數

2.根據分數範圍刪除有序集合,返回刪除元素的個數
zremrangebyscore(name, min, max)

3.根據排名範圍刪除集合
zremrangebyrank(key, min, max)

增加有序集合中某個值的分數
zincrby(name, value, amount=1)

value:若存在,則增加其amount分數;若不存在,則增加新值以及對應的分數
amount:增加的值,可以為負數
返回值:增加後的分數 float類型 ;形如: -5.0 <class ‘float’>

r.zincrby(‘Zarten’, ‘zhi’, -5)

1.返回有序集合中元素個數,返回數字
zcard(key)

2.返回有序集合中分數範圍內的元素個數,返回數字
zcount(key, min, max)

3.返回有序集合中指定某個值的分數,返回數字
zscore(key, name)

4.返回某個值在有序集合中的分數排名,返回數字
zrank(name, value)

5.返回有序結合分數排序後的一段數據,返回列表
zrange(name, start, end, desc=False, withscores=False, score_cast_func=float)
name:redis的name
start:有序集合索引起始位置(非分數)
end:有序集合索引結束位置(非分數)
desc:排序規則,默認按照分數從小到大排序
withscores:是否獲取元素的分數,默認只獲取元素的值
score_cast_func:對分數進行數據轉換的函數

六、全局函數

全局函數對任何數據結構都適用

1.刪除一個或多個鍵的司所有數據
r.delete(*names)

2.判斷redis中是否存在某個鍵
r.exists(key)

3.重命名redis中建名
r.rename(key, new_key)

4.移動某個鍵所有數據到某一個db中
r.move(key, db_name)

5.隨機獲取redis中某個鍵名
r.randonkey()

6.查看某個鍵數據結構類型
r.type(key)

返回值:字符串(位元組形式) 形如: b’hash’

none (key不存在)
string (字符串)
list (列表)
set (集合)
zset (有序集)
hash (哈希表)

7.設置過期時間
r.expire(key, time)

8.獲取鍵的過期時間
r.ttl(name)

9.獲取所有符合規則的鍵
keys(pattern)
r.keys(‘n*’) 獲取所有以n開頭的鍵

Tags: