1、redis 基本操作命令
- Set 操作
- Set 集合就是不允許重復的列表
- 無序集合
-
- sadd(name,values) 給 name 對應的集合中添加 1 個或多個元素
import redis pool = redis.ConnectionPool(host="192.168.0.221",port=6379,db=1,password="123456",decode_responses=True) re = redis.Redis(connection_pool=pool) re.sadd("Animal","cat") # 給 Animal 集合中添加 1 個元素 print(re.smembers("Animal")) re.sadd("Animal","dog","pig") # 給 Animal 集合中添加多個元素 print(re.smembers("Animal")) # 結果如下 {'cat'} {'pig', 'dog', 'cat'}
-
- smembers(name) 獲取 name 對應的集合的所有成員
import redis pool = redis.ConnectionPool(host="192.168.0.221",port=6379,db=1,password="123456",decode_responses=True) re = redis.Redis(connection_pool=pool) print(re.smembers("Animal")) # 獲取 Animal 對應的值 # 結果如下 {'cat', 'dog', 'pig'}
-
- srandmember(name,numbers) 從 name 對應的集合中隨機獲取 numbers 個元素
import redis pool = redis.ConnectionPool(host="192.168.0.221",port=6379,db=1,password="123456",decode_responses=True) re = redis.Redis(connection_pool=pool) print(re.srandmember("Animal",2)) # 結果如下 ['dog', 'pig']
-
- scard(name) 獲取 name 對應的集合中的元素個數
import redis pool = redis.ConnectionPool(host="192.168.0.221",port=6379,db=1,password="123456",decode_responses=True) re = redis.Redis(connection_pool=pool) print(re.smembers("Animal")) # 獲取 Animal 對應的值 print(re.scard("Animal")) # 獲取 Animal 對應的值的數量 # 結果如下 {'pig', 'cat', 'dog'} 3
-
- sdiff(keys,*args) 在第一個 name 對應的集合中且不在其他 name 對應的集合的元素集合
import redis pool = redis.ConnectionPool(host="192.168.0.221",port=6379,db=1,password="123456",decode_responses=True) re = redis.Redis(connection_pool=pool) re.sadd("set_name","aa","bb") re.sadd("set_name1","bb","cc") re.sadd("set_name2","bb","cc","dd") print(re.sdiff("set_name","set_name1","set_name2")) # 輸出存在 set_name 中但是不存在 set_name1 和 set_name2 中的元素 # 結果如下 {'aa'}
-
- sinter(keys,*args) 獲取多個 name 對應集合的交集
import redis pool = redis.ConnectionPool(host="192.168.0.221",port=6379,db=1,password="123456",decode_responses=True) re = redis.Redis(connection_pool=pool) re.sadd("set_name","aa","bb") re.sadd("set_name1","bb","cc") re.sadd("set_name2","bb","cc","dd") print(re.sinter("set_name","set_name1","set_name2")) # 輸出 set_name,set_name1 和 set_name2 的交集 # 結果如下 {'bb'}
-
- sunion(keys,*args) 獲取多個 name 對應的集合的並集
import redis pool = redis.ConnectionPool(host="192.168.0.221",port=6379,db=1,password="123456",decode_responses=True) re = redis.Redis(connection_pool=pool) re.sadd("set_name","aa","bb") re.sadd("set_name1","bb","cc") re.sadd("set_name2","bb","cc","dd") print(re.sunion("set_name","set_name1","set_name2")) # 獲取 set_name,set_name1,set_name2 的並集 # 結果如下 {'bb', 'cc', 'aa', 'dd'}
-
- sismember(name,value)檢查 value 是否是 name 對應的集合內的元素
import redis pool = redis.ConnectionPool(host="192.168.0.221",port=6379,db=1,password="123456",decode_responses=True) re = redis.Redis(connection_pool=pool) print(re.sismember("Animal","cat")) # 判斷 cat 存在於集合 Animal 中 # 結果如下 True
-
- smove(src,dst,value)將元素 value 從 src 集合中移動到 dst 集合中
import redis pool = redis.ConnectionPool(host="192.168.0.221",port=6379,db=1,password="123456",decode_responses=True) re = redis.Redis(connection_pool=pool) re.smove("set_name1","set_name","cc") # 將 set_name1 中的 cc 移動到 set_name 中
-
- spop(name) 從集合的右側移除一個元素,並將其返回
import redis pool = redis.ConnectionPool(host="192.168.0.221",port=6379,db=1,password="123456",decode_responses=True) re = redis.Redis(connection_pool=pool) print(re.smembers("Animal")) print(re.spop("Animal")) # 移除某個值(無序刪除) print(re.smembers("Animal")) # 結果如下 {'dog', 'cat', 'pig'} cat {'dog', 'pig'}
-
- srem(name, values) 指定刪除 name 集合中的元素 values
import redis pool = redis.ConnectionPool(host="192.168.0.221",port=6379,db=1,password="123456",decode_responses=True) re = redis.Redis(connection_pool=pool) print(re.smembers("Animal")) re.srem("Animal","cat") # 指定刪除 Animal 集合中的 cat 元素 print(re.smembers("Animal")) # 結果如下 {'dog', 'cat', 'pig'} {'dog', 'pig'}
import redis pool = redis.ConnectionPool(host="192.168.0.221",port=6379,db=1,password="123456",decode_responses=True) re = redis.Redis(connection_pool=pool) print(re.smembers("Animal")) re.srem("Animal","cat","pig") # 指定刪除 Animal 集合中的 cat 和 pig 元素 print(re.smembers("Animal")) # 結果如下 {'pig', 'cat', 'dog'} {'dog'}
- Zset 操作
- 有序集合:在集合的基礎上,為每元素排序,元素的排序需要根據另外一個值來進行比較
- 對於有序集合,每一個元素有兩個值,即:值和分數,分數專門用來做排序
-
- zadd(name,mapping) 在 name 對應的有序集合中添加元素
import redis pool = redis.ConnectionPool(host="192.168.0.221",port=6379,db=2,password="123456",decode_responses=True) re = redis.Redis(connection_pool=pool) re.zadd("Animal",{"cat":1,"dog":2,"pig":3}) # 往有序集合 Animal 中加入元素值和其對應的分數
-
- zrange( name,start,end,desc=False,withscores=False,score_cast_func=int) 按照索引范圍 [start,end] 獲取 name 對應的有序集合的元素
- name:redis 的 name
- start:有序集合索引起始位置
- end:有序集合索引結束位置
- desc:排序規則,默認按照分數從小到大排序
- False:按分數從小到大排序
- True:按分數從大到小排序
- withscores:是否獲取元素的分數,默認只獲取元素的值
- False:只獲取元素值
- True:獲取元素值和分數
- score_cast_func:對分數進行數據轉換的函數
- zrange( name,start,end,desc=False,withscores=False,score_cast_func=int) 按照索引范圍 [start,end] 獲取 name 對應的有序集合的元素
import redis pool = redis.ConnectionPool(host="192.168.0.221",port=6379,db=2,password="123456",decode_responses=True) re = redis.Redis(connection_pool=pool) print(re.zrange("Animal",0,2)) # 獲取 Animal 有序集合中索引范圍為 [0,2] 所對應的值 # 結果如下 ['cat', 'dog', 'pig']
import redis pool = redis.ConnectionPool(host="192.168.0.221",port=6379,db=2,password="123456",decode_responses=True) re = redis.Redis(connection_pool=pool) print(re.zrange("Animal",0,2,desc=True,withscores=True)) # 獲取 Animal 有序集合中索引范圍為 [0,2] 所對應的值 # 結果如下 [('pig', 3.0), ('dog', 2.0), ('cat', 1.0)]
-
- zrevrange(name,start,end,withscores=False,score_cast_func=float) 按照索引范圍 [start,end] 獲取 name 對應的有序集合的元素
- 用法同 zrange()
- 默認按分數從大到小排序的
- zrevrange(name,start,end,withscores=False,score_cast_func=float) 按照索引范圍 [start,end] 獲取 name 對應的有序集合的元素
import redis pool = redis.ConnectionPool(host="192.168.0.221",port=6379,db=2,password="123456",decode_responses=True) re = redis.Redis(connection_pool=pool) print(re.zrevrange("Animal",0,2,withscores=True)) # 獲取 Animal 有序集合中索引范圍為 [0,2] 所對應的值 # 結果如下 [('pig', 3.0), ('dog', 2.0), ('cat', 1.0)]
-
- zscore(name,value) 獲取name對應有序集合中 value 對應的分數
import redis pool = redis.ConnectionPool(host="192.168.0.221",port=6379,db=2,password="123456",decode_responses=True) re = redis.Redis(connection_pool=pool) print(re.zrange("Animal",0,5,withscores=True)) print(int(re.zscore("Animal","pig"))) # 獲取 Animal 對應有序集合中 pig 對應的分數 # 結果如下 [('cat', 1.0), ('dog', 2.0), ('pig', 3.0)] 3
-
- zcard(name) 獲取有序集合內元素的數量
import redis pool = redis.ConnectionPool(host="192.168.0.221",port=6379,db=2,password="123456",decode_responses=True) re = redis.Redis(connection_pool=pool) print(re.zcard("Animal")) # 結果如下 3
-
- zcount(name,min,max) 獲取有序集合中分數在 [min,max] 之間的個數
import redis pool = redis.ConnectionPool(host="192.168.0.221",port=6379,db=2,password="123456",decode_responses=True) re = redis.Redis(connection_pool=pool) print(re.zcount("Animal",2,3)) # 獲取有序集合 Animal 中分數在 [2,3] 之間的元素數量 # 結果如下 2
-
- zrank(name,value) 獲取 value 在 name 對應的有序集合中的排行位置,從 0 開始
- 按照分數從小到大排序
- zrevrank(name,value) 獲取 value 在 name 對應的有序集合中的排行位置,從 0 開始
- 按照分數從大到小排序
- zrank(name,value) 獲取 value 在 name 對應的有序集合中的排行位置,從 0 開始
import redis pool = redis.ConnectionPool(host="192.168.0.221",port=6379,db=2,password="123456",decode_responses=True) re = redis.Redis(connection_pool=pool) print(re.zrange("Animal",0,5)) print(re.zrank("Animal","cat")) # 獲取 cat 在 Animal 對應的有序集合中的排行位置,從 0 開始(按照分數從小到大排序) print(re.zrevrank("Animal","cat")) # 獲取 cat 在 Animal 對應的有序集合中的排行位置,從 0 開始(按照分數從大到小排序) # 結果如下 ['cat', 'dog', 'pig'] 0 2
-
- zrem(name,values) 刪除 name 對應的有序集合中值是 values 的成員
import redis pool = redis.ConnectionPool(host="192.168.0.221",port=6379,db=2,password="123456",decode_responses=True) re = redis.Redis(connection_pool=pool) print(re.zrange("Animal",0,5,withscores=True)) re.zrem("Animal","dog","cat") # 刪除 Animal 對應的有序集合中值是 dog 和 cat 的成員 print(re.zrange("Animal",0,5,withscores=True)) # 結果如下 [('cat', 1.0), ('dog', 2.0), ('pig', 3.0)] [('pig', 3.0)]
-
- zremrangebyrank(name,min,max) 根據排行范圍刪除
import redis pool = redis.ConnectionPool(host="192.168.0.221",port=6379,db=2,password="123456",decode_responses=True) re = redis.Redis(connection_pool=pool) print(re.zrange("Animal",0,5,withscores=True)) re.zremrangebyrank("Animal",0,2) # 刪除 Animal 對應的有序集合中排行索引值 [0,2] 范圍的元素 print(re.zrange("Animal",0,5,withscores=True)) # 結果如下 [('cat', 1.0), ('dog', 2.0), ('pig', 3.0)] []
-
- zremrangebyscore(name,min,max) 根據分數范圍刪除
import redis pool = redis.ConnectionPool(host="192.168.0.221",port=6379,db=2,password="123456",decode_responses=True) re = redis.Redis(connection_pool=pool) print(re.zrange("Animal",0,5,withscores=True)) re.zremrangebyscore("Animal",0,2) # 刪除 Animal 對應的有序集合中分數等於 0 或者 2 的元素 # re.zremrangebyscore("Animal",2,2) # 刪除 Animal 對應的有序集合中分數等於 2 的元素 print(re.zrange("Animal",0,5,withscores=True)) # 結果如下 [('cat', 1.0), ('dog', 2.0), ('pig', 3.0)] [('cat', 1.0)] # [('cat', 1.0), ('pig', 3.0)]
- 其他操作
- delete(*names) 根據 name 刪除 redis 中的任意數據類型
import redis pool = redis.ConnectionPool(host="192.168.0.221",port=6379,db=0,password="123456",decode_responses=True) re = redis.Redis(connection_pool=pool) re.delete("Student2","Fruits") # 刪除 db0 中 Student2 和 Fruits 數據
-
- exists(name) 檢測 redis 的 name 是否存在
- 0 表示不存在
- 1 表示存在
- exists(name) 檢測 redis 的 name 是否存在
import redis pool = redis.ConnectionPool(host="192.168.0.221",port=6379,db=0,password="123456",decode_responses=True) re = redis.Redis(connection_pool=pool) re.delete("Student2","Fruits") # 刪除 db0 中 Student2 和 Fruits 數據 print(re.exists("Student2")) # 判斷在 db0 中 Student2 是否存在 print(re.exists("Student1")) # 結果如下 0 1
-
- rename(src,dst) 將 src 重命名為 dst
import redis pool = redis.ConnectionPool(host="192.168.0.221",port=6379,db=0,password="123456",decode_responses=True) re = redis.Redis(connection_pool=pool) re.rename("Student1","Student") # 將 Student1 重命名為 Student print(re.get("Student")) # 結果如下 zhaoliu
-
- move(name,db) 將 redis 的某個值移動到指定的 db 下
- db 為 int
- move(name,db) 將 redis 的某個值移動到指定的 db 下
import redis pool = redis.ConnectionPool(host="192.168.0.221",port=6379,db=0,password="123456",decode_responses=True) re = redis.Redis(connection_pool=pool) re.move("Student",4) # 將 Student 從 db0 移動到 db4 中
-
- type(name) 獲取 name 對應值的類型
import redis pool = redis.ConnectionPool(host="192.168.0.221",port=6379,db=0,password="123456",decode_responses=True) re = redis.Redis(connection_pool=pool) print(re.type("Student")) print(re.type("Teacher")) # 結果如下 string hash