1、下載 redis 模塊
- pip install redis


2、redis 資料庫兩種連接方式
- 簡單連接
- decode_responses=True,寫入和讀取的鍵值對中的 value 為 str 型別,不加這個引數寫入的則為位元組型別
import redis re = redis.Redis(host="192.168.0.221",port=6379,db=0,password="123456",decode_responses=True) # host 是 redis 主機,需要 redis 服務端和客戶端都啟動 redis 默認埠是 6379,password 是 redis 資料庫訪問密碼,db 是庫 value = https://www.cnblogs.com/ZhengYing0813/p/re.get("Student1") # 取出鍵 Student 對應的值 print(value) #結果如下 zhangsan
- 使用連接池
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.get("Student1")) # 結果如下 zhangsan
3、redis 基本操作命令
- String 操作
- redis 中的 String 在在記憶體中按照一個 name 對應一個 value 來存盤

-
- get(name) 獲取 name 的 value 值
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.get("Student1")) # 結果如下 zhangsan
-
- mget(keys, *args) 批量獲取多個 value 值
import redis re = redis.Redis(host="192.168.0.221",port=6379,db=0,password="123456",decode_responses=True) value = re.mget("Student1","Student2") # 同時獲取鍵 Student1 和 Student2 的 value 值 print(value) # 結果如下 ['zhangsan', 'lisi']
-
- getrange(key,start,end) 取出索引 [start,end] 所對應的序列
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) name1 = re.get("Student1") print(name1) name2 = re.getrange("Student1",0,3) # 取出索引 [0,3] 所對應的序列 print(name2) # 結果如下 zhaoliu zhao
-
- set(name,value,ex=None,px=None,nx=False,xx=False) 在 redis 中設定值
- 默認不存在則創建,存在則修改
- ex,過期時間(秒)
- px,過期時間(毫秒)
- nx,如果設定為 True,則只有 name 不存在時,當前 set 操作才執行,同 setnx(name, value)
- xx,如果設定為 True,則只有 name 存在時,當前 set 操作才執行
- set(name,value,ex=None,px=None,nx=False,xx=False) 在 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.set("Student","Alex") # 設定 Student 值為 Alex name = re.get("Student") print(name) # 結果如下 Alex
-
- mset(dict) 批量設定值
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.mset({"Student1":"zhangsan","Student2":"lisi"})
-
- getset(name,value) 設定新值,列印原值
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.getset("Student1","zhaoliu")) # 將 Student1 對應的值更新為 zhaoliu,并且回傳原來的值 # 結果如下 wangwu # 回傳的原來的值
-
- append(name,value) 在 name 對應的值后面追加內容 value
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) name1 = re.get("Student1") print(name1) re.append("Student1","liu") # 在 Student1 對應的值上追加字串 liu name2 = re.get("Student1") print(name2) # 結果如下 zhaoliu zhaoliuliu
-
- strlen(name) 回傳name對應值的位元組長度
- 一個漢字 3 個位元組
- strlen(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) name = re.get("Student1") w = re.strlen("Student1") # 獲取 Student1 所對應的字串長度 print(name) print(w) # 結果如下 zhaoliu 7
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) name = re.get("Student1") w = re.strlen("Student1") # 獲取 Student1 所對應的字串長度 print(name) print(w) # 結果如下 趙六 6
- List 操作
- redis 中的 List 在記憶體中按照一個 name 對應一個 List 來存盤

-
- lindex(name,index) 根據索引獲取串列內元素
import redis re = redis.Redis(host="192.168.0.221",port=6379,db=0,password="123456",decode_responses=True) value = re.lindex("Fruits",2) # 通過索引值 2 取出對應的值 Apple print(value) # 結果如下 Apple
-
- lrange(name,start,end) 獲取串列內的多個值
- 回傳的是 value 值串列
- 取值范圍 [start,end]
- lrange(name,start,end) 獲取串列內的多個值
import redis re = redis.Redis(host="192.168.0.221",port=6379,db=0,password="123456",decode_responses=True) value = re.lrange("Fruits",0,1) # 取出串列中索引值為 0 和 1 的 value 值 print(value) # 結果如下 ['Orange', 'Banana']
-
- llen(name) name 對應的 list 元素的個數
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) num = re.llen("Fruits") print(num) # 結果如下 4
-
- lpush(name,values) 在 name 對應的 list 中添加元素
- 串列是有序集合
- 每個新的元素都添加到串列的最左邊
- lpush(name,values) 在 name 對應的 list 中添加元素
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.lpush("Fruits","Apple","Banana","Orange") # 在 Fruits 對應的 list 中添加 Apple,Banana,Orange 三個元素 li = re.lrange("Fruits",0,2) print(li) # 結果如下 ['Orange', 'Banana', 'Apple'] # 保存在串列中的順序與添加的順序相反
-
- rpush(name,values) 在 name 對應的 list 中添加元素
- 同 lpush() 但每個新的元素都添加到串列的最右邊
- rpush(name,values) 在 name 對應的 list 中添加元素
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.rpush("Fruits","Apple","Banana","Orange") # 在 Fruits 對應的 list 中添加 Apple,Banana,Orange 三個元素 li = re.lrange("Fruits",0,2) print(li) # 結果如下 ['Apple', 'Banana', 'Orange']
-
- lpushx(name,value) 在 name 對應的 list 中添加元素
- 只有name已經存在時,值添加到串列的最左邊
- lpushx(name,value) 在 name 對應的 list 中添加元素
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.lpushx("Fruits","Pear") # 在 Fruits 對應的 list 中添加 Pear 單個元素 li = re.lrange("Fruits",0,3) print(li) # 結果如下 ['Pear', 'Apple', 'Banana', 'Orange']
-
- rpushx(name,value) 在 name 對應的 list 中添加元素
- 只有 name 已經存在時,值添加到串列的最右邊
- rpushx(name,value) 在 name 對應的 list 中添加元素
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.rpushx("Fruits","Pear") # 在 Fruits 對應的 list 中添加 Pear 單個元素 li = re.lrange("Fruits",0,3) print(li) # 結果如下 ['Apple', 'Banana', 'Orange', 'Pear']
-
- linsert(name,where,refvalue,value) 在 name 對應的串列的某一個值前或后插入一個新值
- name:redis 的 name
- where:BEFORE(前)或 AFTER(后)
- refvalue:串列內的值
- value:要插入的資料
- linsert(name,where,refvalue,value) 在 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) li1 = re.lrange("Fruits",0,10) print(li1) re.linsert("Fruits","BEFORE","Banana","Grape") # 在串列 Fruits 中找到元素 Banana,在 Banana 前插入 Grape li2 = re.lrange("Fruits",0,10) print(li2) # 結果如下 ['Apple', 'Banana', 'Orange', 'Pear'] ['Apple', 'Grape', 'Banana', 'Orange', 'Pear']
-
- lset(name,index,value) 對 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) li1 = re.lrange("Fruits",0,10) print(li1) re.lset("Fruits",1,"Pear") # 對 Fruits 中的索引位置為 1 的值進行修改成 Pear li2 = re.lrange("Fruits",0,10) print(li2) # 結果如下 ['Apple', 'Grape', 'Banana', 'Orange'] ['Apple', 'Pear', 'Banana', 'Orange'] # Grape 更新為 Pear
-
- lpop(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) li1 = re.lrange("Fruits",0,10) print(li1) fruit = re.lpop("Fruits") # 移除 Fruits 所對應串列中的第一個值,且將移除的值回傳出來 print(fruit) li2 = re.lrange("Fruits",0,10) print(li2) # 結果如下 ['Apple', 'Orange', 'Pear', 'Banana'] Apple ['Orange', 'Pear', 'Banana']
-
- ltrim(name, start, end) 移除串列內沒有在該索引之內的值
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) li1 = re.lrange("Fruits",0,10) print(li1) re.ltrim("Fruits",0,1) # 移除 [0,1] 索引值之外的所有值 li2 = re.lrange("Fruits",0,10) print(li2) # 結果如下 ['Apple', 'Orange', 'Pear', 'Banana'] ['Apple', 'Orange']
- Hash 操作
- redis 中的 hash 在記憶體中類似于一個 name 對應一個 dic 來存盤

-
- hset(name,key,value) 對應的 hash 中設定一個鍵值對(不存在,則創建,否則,修改)
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.hset("Teacher","Teacher01","Mr.ZHENG") re.hset("Teacher","Teacher02","Mr.XIAO") re.hset("Teacher","Teacher03","Mr.FU")
-
- hmset(name,dic) 在 name 對應的 hash 中批量設定鍵值對
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) dic = {"Teacher01":"Mr.ZHENG","Teacher02":"Mr.XIAO","Teacher03":"Mr.FU",} re.hmset("Teacher",dic) # 批量設定多個鍵值對
-
- hget(name,key) 在 name 對應的 hash 中根據 key 獲取 value
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) value = re.hget("Teacher","Teacher02") # 獲取 Teacher 對應的 hash 中鍵 Teacher02 的 value 值 print(value) # 結果如下 Mr.XIAO
-
- hgetall(name) 獲取 name 對應 hash 的所有鍵值對
- 回傳的是一個所有鍵值對的字典
- hgetall(name) 獲取 name 對應 hash 的所有鍵值對
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) dic = re.hgetall("Teacher") # 獲取 Teacher 對應 hash 的所有鍵值對 print(dic) print(type(dic)) # 結果如下 {'Teacher01': 'Mr.ZHENG', 'Teacher02': 'Mr.XIAO', 'Teacher03': 'Mr.FU'} <class 'dict'>
-
- hkeys(name) 獲取 hash 中所有的 key
- 回傳的是所有鍵的串列
- hkeys(name) 獲取 hash 中所有的 key
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) keys = re.hkeys("Teacher") # 獲取 Teacher 所對應 hash 中的所有的 key print(keys) # 結果如下 ['Teacher01', 'Teacher02', 'Teacher03']
-
- hvals(name) 獲取 hash 中所有的 value
- 回傳的是所有值的串列
- hvals(name) 獲取 hash 中所有的 value
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) values = re.hvals("Teacher") # 獲取 Teacher 所對應 hash 中的所有的 value print(values) # 結果如下 ['Mr.ZHENG', 'Mr.XIAO', 'Mr.FU']
-
- hmget(name,keys,*args) 在 name 對應的 hash 中獲取多個 key 的值
- 回傳的是多個 value 值的串列
- hmget(name,keys,*args) 在 name 對應的 hash 中獲取多個 key 的值
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) keys = re.hmget("Teacher","Teacher01","Teacher02") #在 Teacher 對應的 hash 中獲取 Teacher01 和 Teacher02 的值 print(keys) print(type(keys)) """ 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) li = ["Teacher01","Teacher02"] keys = re.hmget("Teacher",li) #在 Teacher 對應的 hash 中獲取 Teacher01 和 Teacher02 的值 print(keys) print(type(keys)) """ # 結果如下 ['Mr.ZHENG', 'Mr.XIAO'] <class 'list'>
-
- hlen(name) 獲取 hash 中鍵值對的個數
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) num = re.hlen("Teacher") # 獲取 Teacher 所對應 hash 中的鍵值對個數 print(num) # 結果如下 3
-
- hdel(name,*keys) 洗掉指定 name 對應的 key 所在的鍵值對
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.hdel("Teacher","Teacher01","Teacher03") # 同時洗掉 Teacher01 和 Teacher02 鍵值對 dic = re.hgetall("Teacher") # 獲取未被洗掉的鍵值對 print(dic) # 結果如下 {'Teacher02': 'Mr.XIAO'}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/159116.html
標籤:Python
上一篇:【2020Python修煉記】面向物件編程——系結方法與非系結方法
下一篇:音頻響度分析和獲取
