Python操作Redis快取資料庫
今天我們來學習如何使用Python操作Redis快取資料庫,首先我們需要使用到一個redis庫,使用之前先安裝一下,依舊是使用pip進行安裝:
pip install redis
安裝好了redis庫之後,我們只需使用
import redis
匯入即可使用了,是不是很方便呀,之前的文章裡也用到很多庫,大部分都是通過這兩個步驟使用的;
接下來我們開始講解如何操作Redis資料庫,介紹一下Redis的五大資料型別:分別是
字串型別string
、
列表型別list
、
集合型別set
、
雜湊型別hash
、
有序集合型別 sorted set
開啟資料庫
要注意我們操作之前需要先開啟Redis資料庫,我們上一篇文章《Redis的使用》裡面有告訴我們如何安裝Redis資料庫,那我們現在先開啟一個 命令視窗,使用 cd 命令切換目錄到 redis 所在的目錄執行
redis-server.exe redis.windows.conf
這時候另啟一個命令視窗,原來的不要關閉,不然就無法訪問服務端了,我們先試一下可不可以使用
# 設定鍵值對:
set Angle 20
# 取出鍵值對:
get Angle
# 設定鍵值對:
set class a
# 取出鍵值對:
get class
一、字串型別string
我們先通過例子看一下如何使用string型別資料
import redis
# 連線資料庫
client = redis.StrictRedis(host='localhost', port=6379, db=0)
##### 單個string
result = client.set('Mark', 100)
print(result) # 輸出:True
age = client.get('Mark')
print(age.decode()) # 輸出:100
##### 多個string
student = {
'name': 'zeng',
'age': '22'
}
result1 = client.mset(student)
print(result1) # True
stu = client.mget(['name', 'age'])
print(stu) # 輸出:[b'zeng', b'22']
##### 刪除操作
d = client.delete('name', 'age')
print(d) # 2
result = client.get('name')
print(result) # None
上面的例子中分別對單個string、多個string進行了舉例,其中涉及到賦值和取值的方法,我們來看一下具體的介紹:
-
set()方法
:單個string操作方法,用於設定給定 key 的值。如果 key 已經儲存其他值, SET 就覆寫舊值,且無視型別; -
get()方法
:單個string操作,用於獲取指定 key 的值,如果key不存在,返回nil,如果key儲存的值不是字串型別,返回一個錯誤; -
decode()方法
:這個大家應該都知道,用於解碼; -
mset()
:多個string操作,用於同時設定一個或多個key-value對; -
mget()
:多個string操作,返回所有給定key的值; -
delete()
:刪除資料,可以根據key來指定刪除資料;
二、列表型別list
import redis
client = redis.StrictRedis(host='localhost', port=6379, db=0)
-
lpush()方法
:令將一個或多個值插入到列表頭部,如果 key 不存在,一個空列表會被建立並執行 LPUSH 操作,當 key存在但不是列表型別時,返回一個錯誤;
注意:在Redis 2.4版本以前的 LPUSH 命令,都只接受單個 value 值;
# 插入一個元素
result = client.lpush('lsts', 'name')
print(result)
# 建立列表
lsts = ('name', 'age', 'class', 'score')
# 插入多個元素
result = client.lpush('lsts', *lsts)
print(result) # 4
-
lrange()方法
:返回列表中指定區間內的元素,區間以偏移量START和END指定,其中0表示列表的第一個元素,1表示列表的第二個元素,以此類推,以-1表示列表的最後一個元素, -2表示列表的倒數第二個元素,以此類推;
# 先加入進入的元素在後面,後加入的元素在前面
result = client.lrange('lsts', 0, -1)
print(result) # [b'score', b'class', b'age', b'name']
-
lpop()方法
:用於移除並返回列表的第一個元素;
# 從左邊刪除一個元素
result = client.lpop('lsts')
print(result) # b'score'
三、集合型別set
import redis
client = redis.StrictRedis(host='localhost', port=6379, db=0)
-
sadd()
:將一個或多個成員元素加入到集合中,已經存在於集合的成員元素將被忽略;
sets = ('name', 'age', 'class', 'score')
result = client.sadd('new_sets', *sets)
print(result) # 4
-
smembers()
:判斷成員元素是否是集合的成員;
result = client.smembers('new_sets')
print(result)
-
srem()
:用於移除集合中的一個或多個成員元素,不存在的成員元素會被忽略;
result = client.srem('new_sets', 'address')
print(result) # 1
四、雜湊型別hash
import redis
client = redis.StrictRedis(host='localhost', port=6379, db=0)
- hset():用於為雜湊表中的欄位賦值 ,如果雜湊表不存在,一個新的雜湊表被建立並進行HSET操作;
client.hset("hash1", "k1", "v1")
client.hset("hash1", "k2", "v2")
-
hkeys()
:用於獲取雜湊表中的所有域(field);
print(client.hkeys("hash1")) # [b'k1', b'k2']
-
hget()
:用於返回雜湊表中指定欄位的值;
print(client.hget("hash1", "k1")) # b'v1'
-
hmget()
:用於返回雜湊表中,一個或多個給定欄位的值;
print(client.hmget("hash1", "k1", "k2")) # [b'v1', b'v2']
五、有序集合型別 sorted set
import redis
client = redis.StrictRedis(host='localhost', port=6379, db=0)
-
zadd(name, *args, **kwargs)
:在name對應的有序集合中新增元素;
d = {'Join': '20'}
result = client.zadd("zset1", d)
print(result) # 1
-
zcard(name)
:獲取name對應的有序集合元素的數量;
result = client.zcard("zset1")
print(result)
-
zcount(name, min, max)
:獲取name對應的有序集合中分數 在 [min,max] 之間的個數;
client.zcount("zset1", 0, 1)
-
zincrby(name, value, amount)
:自增name對應的有序集合的 name 對應的分數;
print(client.zincrby("zset1", 1, '20'))
以上就是Redis的五大資料型別的基本用法的一些小例項,如果大家不懂的記得動手去嘗試喲,特別是每種型別的方法都有很多,大家可以自行檢視API~
官網地址:
https://redis-py.readthedocs.io/en/latest/
參考學習: https://www.9xkd.com/user/plan-view.html?id=1087797436
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69908432/viewspace-2644223/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 快速搭建Redis快取資料庫Redis快取資料庫
- Redis快取資料庫-快速入門Redis快取資料庫
- Python 資料庫騷操作 — RedisPython資料庫Redis
- Python 資料庫騷操作 -- RedisPython資料庫Redis
- Redis快取php資料Redis快取PHP
- 究竟先操作快取,還是資料庫?快取資料庫
- 使用Redis和Java進行資料庫快取RedisJava資料庫快取
- DataTable快取資料操作快取
- 使用Redis和Java進行資料庫快取 - DZone資料庫RedisJava資料庫快取
- 使用 Infinispan 快取功能支援多個 Redis 資料庫快取Redis資料庫
- Redis快取穿透、擊穿、雪崩,資料庫與快取一致性Redis快取穿透資料庫
- 關於redis快取資料庫的一些思考Redis快取資料庫
- memcached資料庫快取資料庫快取
- 快取架構設計細節二三事--究竟先操作快取,還是資料庫?快取架構資料庫
- [Redis] 02-快取和資料庫資料一致性問題Redis快取資料庫
- Redis中快取二進位制資料Redis快取
- 快取淘汰、快取穿透、快取擊穿、快取雪崩、資料庫快取雙寫一致性快取穿透資料庫
- Spring Boot 整合 Redis 實現快取操作Spring BootRedis快取
- 談談Redis快取中MySQL的資料如何與Redis同步Redis快取MySql
- Redis快取擊穿、快取穿透、快取雪崩Redis快取穿透
- [Redis]快取穿透/快取擊穿/快取雪崩Redis快取穿透
- Java操作Redis資料庫方法(簡單)JavaRedis資料庫
- 快取依賴(檔案、資料庫)快取資料庫
- 快取工廠之Redis快取快取Redis
- Python操作SQLite資料庫PythonSQLite資料庫
- Python 操作 SQLite 資料庫PythonSQLite資料庫
- python資料庫(mysql)操作Python資料庫MySql
- python 操作mysql資料庫PythonMySql資料庫
- Python Mysql 資料庫操作PythonMySql資料庫
- python操作mysql資料庫PythonMySql資料庫
- python操作mongodb資料庫PythonMongoDB資料庫
- Redis快取穿透Redis快取穿透
- 分散式快取--快取與資料庫一致性方案分散式快取資料庫
- 如何保證快取(redis)與資料庫的雙寫一致性快取Redis資料庫
- Redis快取篇(四)快取異常Redis快取
- 面試常問:如何保證Redis快取和資料庫的資料一致性NRXW面試Redis快取資料庫
- Redis快取穿透、快取雪崩、redis併發問題分析Redis快取穿透
- 聊聊資料庫和快取同步機制資料庫快取