天天看點

萬事開頭難,python資料庫程式設計:Redis資料庫

作者:天天不吃飯阿

前言

前面更新了python文法程式設計,從八個方面分别簡述了python3基礎入門,清單與元組,字元串,字典,條件丶循環和其他語句,函數,面向對象程式設計,異常與檔案處理,後面有講述了python并發程式設計,并且從網絡程式設計,多線程,多程序,協程等四方面展開,今天輪到講述python資料庫程式設計了。

python資料庫程式設計,我們将從三個方面展開分析

  • MySQL資料庫
  • Redis資料庫
  • MongoDB資料庫

由于MySQL資料庫前面講過了,今天跳過直接來到第二篇:Redis資料庫

更多關注:

  • 1.面試PDF+100道大廠面試
  • 2.入門基礎教程
  • 3.11子產品零基礎到精通筆記
  • 4.百個項目實戰+爬蟲教程+代碼
  • 5.量化交易,機器學習,深度學習
  • 6.Python遊戲源碼
  • 7.交流學習

關注+評論或者私信(python)免費擷取

python資料庫程式設計:Redis資料庫

一丶服務端和用戶端基本操作指令

Redis是一種基于記憶體的資料結構存儲系統,常用于緩存、消息隊列、排行榜等場景。下面介紹一些Redis服務端和用戶端的基本操作指令。

1.服務端指令

啟動Redis服務

redis-server
           

關閉Redis服務

redis-cli shutdown
           

檢視Redis服務狀态

redis-cli ping
           

檢視Redis服務版本

redis-cli info server
           

檢視Redis服務配置

redis-cli config get *
           

修改Redis服務配置

redis-cli config set <parameter> <value>
           

2.用戶端指令

連接配接Redis服務

redis-cli -h <host> -p <port> -a <password>
           

設定鍵值對

redis-cli set <key> <value>
           

擷取鍵值對

redis-cli get <key>
           

删除鍵值對

redis-cli del <key>
           

判斷鍵是否存在

redis-cli exists <key>
           

設定鍵的過期時間

redis-cli expire <key> <seconds>
           

檢視鍵的過期時間

redis-cli ttl <key>
           

檢視所有鍵

redis-cli keys *
           

檢視鍵的類型

redis-cli type <key>
           

清單操作

redis-cli lpush <key> <value>  # 從左側插入元素
redis-cli rpush <key> <value>  # 從右側插入元素
redis-cli lrange <key> <start> <stop>  # 擷取清單元素
redis-cli lpop <key>  # 從左側彈出元素
redis-cli rpop <key>  # 從右側彈出元素
           

集合操作

redis-cli sadd <key> <value>  # 添加元素
redis-cli smembers <key>  # 擷取所有元素
redis-cli sismember <key> <value>  # 判斷元素是否存在
redis-cli srem <key> <value>  # 删除元素
           

哈希表操作

redis-cli hset <key> <field> <value>  # 設定字段值
redis-cli hget <key> <field>  # 擷取字段值
redis-cli hgetall <key>  # 擷取所有字段和值
redis-cli hdel <key> <field>  # 删除字段
           

有序集合操作

redis-cli zadd <key> <score> <value>  # 添加元素
redis-cli zrange <key> <start> <stop>  # 擷取元素
redis-cli zrem <key> <value>  # 删除元素
           

以上是Redis服務端和用戶端的基本操作指令,更多指令可以參考Redis官方文檔。

二丶資料操作

1.string

Redis是一種基于記憶體的資料存儲系統,支援多種資料結構,其中之一就是string。在Python中,我們可以使用redis-py庫來操作Redis資料庫中的string資料類型。

以下是一些常用的Redis string操作指令:

①.set(key, value):設定key對應的value值

import redis

r = redis.Redis(host='localhost', port=6379, db=0)

r.set('name', 'Tom')
           

②.get(key):擷取key對應的value值

import redis

r = redis.Redis(host='localhost', port=6379, db=0)

name = r.get('name')
print(name)
           

③.mset(mapping):批量設定多個key-value對

import redis

r = redis.Redis(host='localhost', port=6379, db=0)

r.mset({'name': 'Tom', 'age': 18})
           

④.mget(keys):批量擷取多個key對應的value值

import redis

r = redis.Redis(host='localhost', port=6379, db=0)

values = r.mget(['name', 'age'])
print(values)
           

⑤.incr(key, amount=1):将key對應的value值增加amount

import redis

r = redis.Redis(host='localhost', port=6379, db=0)

r.set('count', 1)
r.incr('count')
           

⑥.decr(key, amount=1):将key對應的value值減少amount

import redis

r = redis.Redis(host='localhost', port=6379, db=0)

r.set('count', 10)
r.decr('count', 5)
           

⑦.append(key, value):将value追加到key對應的value值的末尾

import redis

r = redis.Redis(host='localhost', port=6379, db=0)

r.set('name', 'Tom')
r.append('name', ' Smith')
           

⑧.strlen(key):擷取key對應的value值的長度

import redis

r = redis.Redis(host='localhost', port=6379, db=0)

name_len = r.strlen('name')
print(name_len)
           

以上是Redis string資料類型的一些基本操作指令,可以根據實際需求進行使用。

2.鍵指令

Redis中的鍵指令用于管理和操作鍵值對。以下是一些常用的鍵指令:

  • SET key value:設定鍵值對,如果鍵已經存在,則覆寫原有的值。
  • GET key:擷取鍵對應的值。
  • DEL key:删除指定的鍵值對。
  • EXISTS key:檢查指定的鍵是否存在。
  • KEYS pattern:查找所有符合給定模式的鍵。
  • TTL key:擷取鍵的過期時間,機關為秒。
  • EXPIRE key seconds:設定鍵的過期時間,機關為秒。
  • PERSIST key:移除鍵的過期時間,使其永久有效。
  • TYPE key:擷取鍵對應的值的資料類型。

這些指令可以通過Python Redis子產品中的對應方法來調用,例如:

import redis

# 連接配接Redis資料庫
r = redis.Redis(host='localhost', port=6379, db=0)

# 設定鍵值對
r.set('name', 'Alice')

# 擷取鍵對應的值
name = r.get('name')
print(name)

# 删除指定的鍵值對
r.delete('name')

# 檢查指定的鍵是否存在
exists = r.exists('name')
print(exists)

# 查找所有符合給定模式的鍵
keys = r.keys('*')
print(keys)

# 擷取鍵的過期時間
ttl = r.ttl('name')
print(ttl)

# 設定鍵的過期時間
r.expire('name', 60)

# 移除鍵的過期時間
r.persist('name')

# 擷取鍵對應的值的資料類型
type = r.type('name')
print(type)
           

3.hash

在 Redis 中,Hash 是一個鍵值對集合,其中鍵和值都是字元串類型。Hash 可以用于存儲對象,例如使用者資訊、商品資訊等。

以下是 Python Redis 操作 Hash 的一些常用指令:

①.HSET(key, field, value):設定 Hash 中指定字段的值

redis_conn.hset('user:1', 'name', 'Alice')
           

②.HGET(key, field):擷取 Hash 中指定字段的值

redis_conn.hget('user:1', 'name')
           

③.HMSET(key, mapping):設定 Hash 中多個字段的值

redis_conn.hmset('user:1', {'age': 20, 'gender': 'female'})
           

④.HMGET(key, fields):擷取 Hash 中多個字段的值

redis_conn.hmget('user:1', 'name', 'age', 'gender')
           

⑤.HGETALL(key):擷取 Hash 中所有字段和值

redis_conn.hgetall('user:1')
           

⑥.HDEL(key, field):删除 Hash 中指定字段

redis_conn.hdel('user:1', 'gender')
           

⑦.HEXISTS(key, field):判斷 Hash 中是否存在指定字段

redis_conn.hexists('user:1', 'gender')
           

⑧.HKEYS(key):擷取 Hash 中所有字段

redis_conn.hkeys('user:1')
           

⑨.HVALS(key):擷取 Hash 中所有值

redis_conn.hvals('user:1')
           

⑩.HLEN(key):擷取 Hash 中字段的數量

redis_conn.hlen('user:1')
           

以上是 Python Redis 操作 Hash 的一些常用指令,可以根據實際需求選擇使用。

4.list

Redis中的List是一個雙向連結清單,支援在頭部和尾部進行插入和删除操作。List中的每個元素都是一個字元串。

Python中可以使用redis-py庫來操作Redis資料庫中的List資料類型。

首先需要導入redis庫:

import redis
           

連接配接Redis資料庫:

r = redis.Redis(host='localhost', port=6379, db=0)
           

List操作

①. 插入元素

在List的頭部插入一個或多個元素:

r.lpush('list_key', 'value1', 'value2', 'value3')
           

在List的尾部插入一個或多個元素:

r.rpush('list_key', 'value4', 'value5', 'value6')
           

在指定元素前或後插入一個元素:

r.linsert('list_key', 'BEFORE', 'value2', 'new_value')
r.linsert('list_key', 'AFTER', 'value2', 'new_value')
           

②. 擷取元素

擷取List中指定範圍内的元素:

r.lrange('list_key', 0, -1)  # 擷取所有元素
r.lrange('list_key', 0, 2)  # 擷取前三個元素
r.lrange('list_key', -3, -1)  # 擷取後三個元素
           

擷取List中指定索引的元素:

r.lindex('list_key', 0)  # 擷取第一個元素
r.lindex('list_key', -1)  # 擷取最後一個元素
           

③. 删除元素

從List的頭部删除一個元素:

r.lpop('list_key')
           

從List的尾部删除一個元素:

r.rpop('list_key')
           

删除List中指定的元素:

r.lrem('list_key', 0, 'value2')  # 删除所有值為value2的元素
r.lrem('list_key', 1, 'value2')  # 删除第一個值為value2的元素
r.lrem('list_key', -1, 'value2')  # 删除最後一個值為value2的元素
           

④. 其他操作

擷取List的長度:

r.llen('list_key')
           

将List中的最後一個元素移動到另一個List的頭部:

r.rpoplpush('list_key', 'new_list_key')
           

阻塞式地從一個List的尾部彈出一個元素,并将其插入到另一個List的頭部:

r.brpoplpush('list_key', 'new_list_key', timeout=0)
           

以上就是Python中操作Redis資料庫中List資料類型的常用方法。

5.set

Redis中的Set是一個無序的集合,它的作用和List類似,都是用來存儲多個字元串元素的集合。但是Set不同于List的是,Set中不允許出現重複的元素,而且Set中的元素是無序的。

Python中操作Redis的Set可以使用redis子產品中的set方法。下面是一些常用的Set操作:

①.添加元素

import redis

r = redis.Redis(host='localhost', port=6379, db=0)

# 添加單個元素
r.sadd('set_key', 'value1')

# 添加多個元素
r.sadd('set_key', 'value2', 'value3', 'value4')
           

②.擷取元素

import redis

r = redis.Redis(host='localhost', port=6379, db=0)

# 擷取所有元素
members = r.smembers('set_key')
print(members)

# 判斷元素是否存在
is_member = r.sismember('set_key', 'value1')
print(is_member)
           

③.删除元素

import redis

r = redis.Redis(host='localhost', port=6379, db=0)

# 删除單個元素
r.srem('set_key', 'value1')

# 删除多個元素
r.srem('set_key', 'value2', 'value3', 'value4')

# 删除集合
r.delete('set_key')
           

④.集合運算

import redis

r = redis.Redis(host='localhost', port=6379, db=0)

# 求交集
r.sadd('set_key1', 'value1', 'value2', 'value3')
r.sadd('set_key2', 'value2', 'value3', 'value4')
intersection = r.sinter('set_key1', 'set_key2')
print(intersection)

# 求并集
union = r.sunion('set_key1', 'set_key2')
print(union)

# 求差集
difference = r.sdiff('set_key1', 'set_key2')
print(difference)
           

6.zset

在 Redis 中,ZSET(有序集合)是一種特殊的資料結構,它是一個鍵值對集合,其中每個元素都關聯着一個浮點數分數。這個分數被用來按照從最小值到最大值的順序排序元素。ZSET 的成員是唯一的,但分數(score)卻可以重複。

Python Redis 操作有序集合的方法:

①.添加元素 使用 zadd 指令向有序集合中添加元素,文法如下:

zadd(name, mapping)
           

其中,name 是有序集合的名稱,mapping 是一個字典,表示要添加的元素和它們的分數。例如:

redis.zadd('myzset', {'one': 1, 'two': 2, 'three': 3})
           

②.擷取元素 使用 zrange 指令擷取有序集合中指定範圍内的元素,文法如下:

zrange(name, start, end, withscores=False)
           

其中,name 是有序集合的名稱,start 和 end 分别表示要擷取的元素的起始位置和結束位置(從 0 開始計數),withscores 表示是否同時傳回元素的分數。例如:

redis.zrange('myzset', 0, -1, withscores=True)
           

③.擷取元素數量 使用 zcard 指令擷取有序集合中元素的數量,文法如下:

zcard(name)
           

其中,name 是有序集合的名稱。例如:

redis.zcard('myzset')
           

④.擷取元素排名 使用 zrank 指令擷取有序集合中指定元素的排名,文法如下:

zrank(name, value)
           

其中,name 是有序集合的名稱,value 是要擷取排名的元素。例如:

redis.zrank('myzset', 'two')
           

⑤.擷取元素分數 使用 zscore 指令擷取有序集合中指定元素的分數,文法如下:

zscore(name, value)
           

其中,name 是有序集合的名稱,value 是要擷取分數的元素。例如:

redis.zscore('myzset', 'two')
           

⑥.删除元素 使用 zrem 指令從有序集合中删除指定的元素,文法如下:

zrem(name, values)
           

其中,name 是有序集合的名稱,values 是要删除的元素。例如:

redis.zrem('myzset', 'two')
           

⑦.擷取指定分數範圍内的元素 使用 zrangebyscore 指令擷取有序集合中指定分數範圍内的元素,文法如下:

zrangebyscore(name, min, max, start=None, num=None, withscores=False, score_cast_func=float)
           

其中,name 是有序集合的名稱,min 和 max 分别表示要擷取的分數範圍的最小值和最大值,start 和 num 分别表示要擷取的元素的起始位置和數量(從 0 開始計數),withscores 表示是否同時傳回元素的分數,score_cast_func 表示分數的類型轉換函數。例如:

redis.zrangebyscore('myzset', 1, 2, withscores=True)
           

三丶python操作Redis

1.Redis庫

Redis是一個開源的記憶體資料結構存儲系統,它支援多種資料結構,包括字元串、哈希、清單、集合和有序集合等。Redis的特點是速度快、可靠性高、支援豐富的資料結構和操作,是以被廣泛應用于緩存、消息隊列、計數器、排行榜等場景。

Python是一種進階程式設計語言,它具有簡單易學、代碼簡潔、可讀性強等特點,是以被廣泛應用于Web開發、資料分析、人工智能等領域。Python提供了多種Redis用戶端庫,可以友善地操作Redis資料庫。

Python操作Redis需要先安裝Redis用戶端庫,常用的有redis-py、redis、hiredis等。其中redis-py是Redis官方推薦的Python用戶端庫,支援Python 2和Python 3,提供了豐富的API,使用友善。

安裝redis-py庫可以使用pip指令:

pip install redis
           

安裝完成後,就可以在Python中使用redis-py庫操作Redis資料庫了。下面是一個簡單的示例:

import redis

# 連接配接Redis資料庫
r = redis.Redis(host='localhost', port=6379, db=0)

# 設定鍵值對
r.set('name', 'Tom')

# 擷取鍵值對
name = r.get('name')
print(name)
           

在上面的示例中,首先使用redis.Redis()方法連接配接Redis資料庫,然後使用r.set()方法設定鍵值對,使用r.get()方法擷取鍵值對。其中,host參數指定Redis伺服器的IP位址,port參數指定Redis伺服器的端口号,db參數指定Redis資料庫的編号。如果沒有指定db參數,則預設使用編号為0的資料庫。

除了set()和get()方法,redis-py庫還提供了多種操作Redis資料庫的方法,包括incr()、decr()、hset()、hget()、lpush()、rpush()、lrange()、sadd()、smembers()、zadd()、zrange()等

連接配接Redis資料庫:

import redis

# 連接配接Redis資料庫
r = redis.Redis(host='localhost', port=6379, db=0)
           

設定鍵值對:

# 設定鍵值對
r.set('name', 'Tom')
           

擷取鍵值對:

# 擷取鍵值對
name = r.get('name')
print(name)
           

删除鍵值對:

# 删除鍵值對
r.delete('name')
           

設定過期時間:

# 設定過期時間
r.setex('name', 10, 'Tom')  # 10秒後過期
           

判斷鍵是否存在:

# 判斷鍵是否存在
if r.exists('name'):
    print('name exists')
else:
    print('name does not exist')
           

自增自減:

# 自增
r.incr('count')
# 自減
r.decr('count')
           

以上是Redis庫的基本操作

2.python-redis對string類型的操作

Redis是一種記憶體鍵值對存儲資料庫,支援不同類别的資料類型,其中之一是string類型。字元串類型是Redis中最基本的資料類型。下面是一些操作Redis中String類型的基本操作:

①.設定String

我們可以使用set()方法設定String。如果鍵不存在,則建立一個新鍵并存儲字元串值。如果鍵已經存在則覆寫該鍵的舊值。例如:

import redis

r = redis.Redis(host='localhost', port=6379, db=0)

r.set('key', 'value')
           

這将在Redis中建立一個名為“key”的鍵,并将其值設定為“value”。

②.擷取String

我們可以使用get()方法來擷取String的值。例如:

value = r.get('key')
           

這将傳回名為“key”的鍵的目前值。

③.删除String

我們可以使用delete()方法來删除String。例如:

r.delete('key')
           

這将删除名為“key”的鍵。

④.操作String

Redis還提供了許多其他操作String的方法,例如:

  • append(key, value):将value附加到key的末尾。
  • incr(key[, amount]):遞增名為“key”的鍵的值,可加+1或加自定義數值amount。
  • decr(key[, amount]):遞減名為“key”的鍵的值,可減-1或減自定義數值amount。
  • setnx(key, value):僅在鍵“key”不存在時設定鍵的值為“value”。
  • getset(key, value):将鍵“key”的值設定為“value”,并傳回鍵“key”之前的值。

例如,增加"in_stock"鍵的值2:

r.set("in_stock",10)
r.incr("in_stock",2) 
print(r.get("in_stock"))
           

這将傳回12,因為"in_stock"鍵的值從10增加了2。

這是Redis中一些對String類型基本的操作,我們還可以使用其他方法,根據具體應用需求進行選擇和使用。

下章講:python資料庫程式設計:MongoDB資料庫

更多關注:

  • 1.面試PDF+100道大廠面試
  • 2.入門基礎教程
  • 3.11子產品零基礎到精通筆記
  • 4.百個項目實戰+爬蟲教程+代碼
  • 5.量化交易,機器學習,深度學習
  • 6.Python遊戲源碼
  • 7.交流學習

關注+評論或者私信(python)免費擷取

#python程式設計小知識#​#python自學#​#python自學#​#python打卡#​#每天學python#​