最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python連接讀寫(xiě)操作redis的完整代碼實(shí)例

 更新時(shí)間:2023年01月07日 08:55:30   作者:zhangphil  
這篇文章主要介紹了python連接讀寫(xiě)操作redis的完整代碼實(shí)例,包括redis連接與讀寫(xiě)操作,redis-sentinel哨兵模式下Python操作redis,redis-cluster(集群)模式下Python操作redis,需要的朋友可以參考下

python讀寫(xiě)操作redis數(shù)據(jù)庫(kù)

redis有16個(gè)邏輯數(shù)據(jù)庫(kù)(編號(hào)db0到db15),每個(gè)邏輯數(shù)據(jù)庫(kù)數(shù)據(jù)是隔離的,默認(rèn)db0。選擇第n個(gè)邏輯數(shù)據(jù)庫(kù),命令select n ,python連接時(shí)可指定數(shù)據(jù)庫(kù)編號(hào)(0~15)。

為python安裝支持庫(kù):

pip install redis

連接redis

第一種方式,直連:

import redis

def redis_opt():
redis_conn = redis.Redis(host='127.0.0.1', port=6379, password='', db=6)
print(redis_conn.client_id())

第二種方式,連接池:

import redis

def redis_opt():
redis_pool = redis.ConnectionPool(host='127.0.0.1', port=6379, password='', db=6)
redis_conn = redis.Redis(connection_pool=redis_pool)
print(redis_conn.client_id())

對(duì)redis數(shù)據(jù)庫(kù)進(jìn)行讀寫(xiě)操作

import redis

def redis_opt():
redis_pool = redis.ConnectionPool(host='127.0.0.1', port=6379, password='', db=6)
redis_conn = redis.Redis(connection_pool=redis_pool)

key = 'data'
my_data = {"name": 'fly', 'year': 2022}
redis_conn.set(key, str(my_data))
print(redis_conn.get(key))

如圖:

更新操作:

key = 'data'
my_data = {'name': 'fly', 'year': 2022}
redis_conn.set(key, str(my_data))

my_data = {'name': 'phil', 'year': 2020}
redis_conn.getset(key, str(my_data))

追加操作:

redis_pool = redis.ConnectionPool(host='127.0.0.1', port=6379, password='', db=6)
redis_conn = redis.Redis(connection_pool=redis_pool)

key = 'data'
redis_conn.set(key, 'hello,')
redis_conn.append(key, 'world')

 lpush 列表左側(cè)追加值

key = 'data'
redis_conn.lpush(key, 2020, 2021, 2022)
redis_conn.lpush(key, 2023)

如果換成右側(cè)追加,相當(dāng)于尾部追加:

key = 'data'
redis_conn.rpush(key, 2020, 2021, 2022)
redis_conn.rpush(key, 2023)

lpushx(name, value),如果鍵name存在時(shí)候才追加,否則不會(huì)追加。

根據(jù)特定值位置位置插入新值

key = 'data'
redis_conn.rpush(key, 2020, 2021, 2022)
redis_conn.rpush(key, 2023)
print(redis_conn.llen(key)) # 列表長(zhǎng)度

# AFTER,之后。BEFORE之前。
v = redis_conn.linsert(name=key, where='AFTER', refvalue=2020, value='1999')
print(v)

根據(jù)索引位置插入新值:

key = 'data'
redis_conn.rpush(key, 2020, 2021, 2022)
redis_conn.rpush(key, 2023)
print(redis_conn.llen(key)) # 列表長(zhǎng)度

v = redis_conn.lset(name=key, index=2, value='1999')
print(v)

根據(jù)列表索引起始位置獲取值

key = 'data'
redis_conn.rpush(key, 2020, 2021, 2022)
redis_conn.rpush(key, 2023)
print(redis_conn.llen(key)) # 列表長(zhǎng)度

v = redis_conn.lrange(name=key, start=1, end=3)
print(v)

輸出:

4
[b'2021', b'2022', b'2023']

刪除列表左側(cè)的一個(gè)值

lpop(name)

從左向右刪除列表中n個(gè)相同的值

lrem(name, value, num)

如果是從右向作,需要把num的值改為負(fù)數(shù)即可,比如-3,從右向左刪掉3個(gè)重復(fù)的value。

刪除列表范圍之外所有值

ltrim(name, start, end)

列表中最右邊的值刪除并放入到新列表中的最左邊

rpoplpush(src, dst)

brpoplpush(src, dst, timeout=0)

存儲(chǔ)哈希Map鍵值

key = 'data'
redis_conn.hset(key, 'name', 'fly')
redis_conn.hset(key, 'year', 2022)
print(redis_conn.hget(key, 'year'))

輸出:

b'2022'

以下注意name和key的區(qū)分。name是作為在redis中的“大鍵”,key是在redis中存儲(chǔ)名為name的數(shù)據(jù)塊中的鍵。

存儲(chǔ)打包的哈希鍵值對(duì)

my_name = 'my_data'
my_key = 'my_key'
val = {'name': 'fly', 'year': 2022}
json_val = json.dumps(val)
redis_conn.hset(name=my_name, key=my_key, value=json_val)
print(redis_conn.hgetall(my_name))
print(redis_conn.hkeys(my_name))
print(redis_conn.hvals(my_name))

輸出:

{b'my_key': b'{"name": "fly", "year": 2022}'}
[b'my_key']
[b'{"name": "fly", "year": 2022}']

刪除鍵值對(duì)

my_name = 'my_data'
my_key = 'my_key'
val = {'name': 'fly', 'year': 2022}
json_val = json.dumps(val)
redis_conn.hset(name=my_name, key=my_key, value=json_val)
print(redis_conn.hgetall(my_name))
print(redis_conn.hkeys(my_name))
print(redis_conn.hvals(my_name))
print(redis_conn.hexists(name=my_name, key=my_key))
print(redis_conn.hdel(my_name, my_key)) #刪除my_name數(shù)據(jù)塊里面的my_key鍵值對(duì)

設(shè)置鍵值的過(guò)期時(shí)間,超過(guò)時(shí)間就自動(dòng)刪除

my_name = 'my_data'
my_key = 'my_key'
val = {'name': 'fly', 'year': 2022}
json_val = json.dumps(val)
redis_conn.hset(name=my_name, key=my_key, value=json_val)
print(redis_conn.hgetall(my_name))
redis_conn.expire(name=my_name, time=5) # 超過(guò)5秒自動(dòng)刪除。

全局查詢r(jià)edis中是否有以name存儲(chǔ)的數(shù)據(jù)塊

v = redis_conn.exists('my_name')

重命名redis中的鍵名

rename(src, dst)

把某一鍵值移動(dòng)到另外的redis邏輯庫(kù)

move(name, db)

類型判斷

type(name)

redis-sentinel哨兵模式下Python操作redis代碼實(shí)例

#redis-sentinel連接
'''
啟動(dòng)redis服務(wù)端(6390主庫(kù)):
redis-server msconf/redis-6390.conf
redis-server msconf/redis-6391.conf
redis-server msconf/redis-6392.conf
redis-server msconf/redis-6393.conf
啟動(dòng)哨兵功能:
redis-sentinel redis_sentinel/redis-sentinel_26390.conf
redis-sentinel redis_sentinel/redis-sentinel_26391.conf
redis-sentinel redis_sentinel/redis-sentinel_26392.conf
'''

## 導(dǎo)入redis sentinel包
from redis.sentinel import Sentinel
#指定sentinel的地址和端口號(hào)(連接哨兵)
sentinel=Sentinel([('192.168.160.135',26390),('192.168.160.135',26391),('192.168.160.135',26392)],socket_timeout=0.1)
#測(cè)試,獲取以下主庫(kù)和從庫(kù)的信息:mymaster是哨兵配置文件中的指定的監(jiān)控主庫(kù)
print(sentinel.discover_master('mymaster'))#主庫(kù)信息
print(sentinel.discover_slaves('mymaster'))#從庫(kù)信息

##配置讀寫(xiě)分離
#寫(xiě)節(jié)點(diǎn):主庫(kù)
master=sentinel.master_for('mymaster',password=123456,socket_timeout=0.1)#注意主庫(kù)設(shè)置了安全模式有密碼
print(master)
#讀節(jié)點(diǎn):從庫(kù)
slave=sentinel.slave_for('mymaster',password=123456,socket_timeout=0.1)#注意從庫(kù)設(shè)置了安全模式有密碼
print(slave)

#讀寫(xiě)分離測(cè)試
print(master.dbsize())
print(master.keys())
print(slave.keys())
master.set('name4',4)
print(slave.keys())
print(slave.get('name4'))

redis-cluster(集群)模式下Python操作redis代碼實(shí)例

# redis-cluster集群:https://github.com/Grokzen/redis-py-cluster
# pip install redis-py-cluster
from rediscluster import StrictRedisCluster
#是少要鏈接集群中的一臺(tái)數(shù)據(jù)庫(kù),可以是多臺(tái),防止有的數(shù)據(jù)庫(kù)會(huì)掛掉
startup_nodes = [{"host": "192.168.160.135", "port": "7000"}, {"host": "192.168.160.135", "port": "7001"},
{"host": "192.168.160.135", "port": "7002"}, {"host": "192.168.160.135", "port": "7003"},
{"host": "192.168.160.135", "port": "7004"}, {"host": "192.168.160.135", "port": "7005"} ]
rc = StrictRedisCluster(startup_nodes=startup_nodes,password=123456, decode_responses=True)
rc.set('name1',1234)
print(rc.keys())
print(rc.dbsize())
print(rc.get('name1'))

以上就是python連接讀寫(xiě)操作redis的完整代碼實(shí)例的詳細(xì)內(nèi)容,更多關(guān)于python讀寫(xiě)redis的代碼實(shí)例的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!,希望大家以后多多支持腳本之家!

相關(guān)文章

  • python 錯(cuò)誤處理 assert詳解

    python 錯(cuò)誤處理 assert詳解

    這篇文章主要介紹了python 錯(cuò)誤處理 assert詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04
  • python selenium瀏覽器復(fù)用技術(shù)的使用

    python selenium瀏覽器復(fù)用技術(shù)的使用

    本文主要介紹了python selenium瀏覽器復(fù)用技術(shù)的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Python3控制路由器——使用requests重啟極路由.py

    Python3控制路由器——使用requests重啟極路由.py

    通過(guò)本文給大家介紹Python3控制路由器——使用requests重啟極路由.py的相關(guān)知識(shí),代碼寫(xiě)了相應(yīng)的注釋,以后再寫(xiě)成可以方便調(diào)用的模塊,感興趣的朋友一起學(xué)習(xí)吧
    2016-05-05
  • 使用PyCharm配合部署Python的Django框架的配置紀(jì)實(shí)

    使用PyCharm配合部署Python的Django框架的配置紀(jì)實(shí)

    這篇文章主要介紹了使用PyCharm配合部署Python的Django框架的配置紀(jì)實(shí),PyCharm是一款強(qiáng)大的Python的IDE,需要的朋友可以參考下
    2015-11-11
  • 使用Python的turtle模塊畫(huà)圖的方法

    使用Python的turtle模塊畫(huà)圖的方法

    這篇文章主要介紹了使用Python的turtle模塊畫(huà)圖的方法,涉及turtle簡(jiǎn)介,運(yùn)動(dòng)命令,畫(huà)筆控制命令的分享,以及具體操作的步驟,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • Python3 解釋器的實(shí)現(xiàn)

    Python3 解釋器的實(shí)現(xiàn)

    在本篇內(nèi)容中小編給大家總結(jié)了關(guān)于Python3解釋器的用法以及相關(guān)知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)下。
    2021-06-06
  • numpy的squeeze函數(shù)使用方法

    numpy的squeeze函數(shù)使用方法

    這篇文章主要介紹了numpy的squeeze函數(shù)使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Python正則表達(dá)式指南 推薦

    Python正則表達(dá)式指南 推薦

    本文介紹了Python對(duì)于正則表達(dá)式的支持,包括正則表達(dá)式基礎(chǔ)以及Python正則表達(dá)式標(biāo)準(zhǔn)庫(kù)的完整介紹及使用示例。本文的內(nèi)容不包括如何編寫(xiě)高效的正則表達(dá)式、如何優(yōu)化正則表達(dá)式,這些主題請(qǐng)查看其他教程。
    2018-10-10
  • Python數(shù)據(jù)分析numpy文本數(shù)據(jù)讀取索引切片實(shí)例詳解

    Python數(shù)據(jù)分析numpy文本數(shù)據(jù)讀取索引切片實(shí)例詳解

    這篇文章主要為大家介紹了Python數(shù)據(jù)分析numpy文本數(shù)據(jù)讀取索引切片實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • Python的json.loads() 方法與json.dumps()方法及使用小結(jié)

    Python的json.loads() 方法與json.dumps()方法及使用小結(jié)

    json.loads() 是一個(gè)非常有用的方法,它允許你在處理 JSON 數(shù)據(jù)時(shí),將其轉(zhuǎn)換為 Python 數(shù)據(jù)類型,以便于在代碼中進(jìn)行操作和處理,這篇文章給大家介紹Python的json.loads() 方法與json.dumps()方法及使用小結(jié),感興趣的朋友一起看看吧
    2024-03-03

最新評(píng)論

土默特左旗| 镇宁| 稻城县| 嘉善县| 合川市| 麦盖提县| 栖霞市| 天门市| 吉安市| 建湖县| 喀喇沁旗| 上思县| 启东市| 高雄县| 克拉玛依市| 固阳县| 县级市| 仁怀市| 南昌县| 江山市| 洛隆县| 台安县| 历史| 东方市| 普洱| 霍山县| 潞城市| 德庆县| 齐齐哈尔市| 泾川县| 宁乡县| 平阴县| 凤庆县| 鸡泽县| 宣化县| 佳木斯市| 江城| 西乌| 盖州市| 富锦市| 永清县|