亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python連接讀寫操作redis的完整代碼實例

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

python讀寫操作redis數(shù)據庫

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

為python安裝支持庫:

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())

對redis數(shù)據庫進行讀寫操作

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 列表左側追加值

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

如果換成右側追加,相當于尾部追加:

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

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

根據特定值位置位置插入新值

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

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

根據索引位置插入新值:

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

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

根據列表索引起始位置獲取值

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

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

輸出:

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

刪除列表左側的一個值

lpop(name)

從左向右刪除列表中n個相同的值

lrem(name, value, num)

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

刪除列表范圍之外所有值

ltrim(name, start, end)

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

rpoplpush(src, dst)

brpoplpush(src, dst, timeout=0)

存儲哈希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中存儲名為name的數(shù)據塊中的鍵。

存儲打包的哈希鍵值對

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}']

刪除鍵值對

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ù)據塊里面的my_key鍵值對

設置鍵值的過期時間,超過時間就自動刪除

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) # 超過5秒自動刪除。

全局查詢redis中是否有以name存儲的數(shù)據塊

v = redis_conn.exists('my_name')

重命名redis中的鍵名

rename(src, dst)

把某一鍵值移動到另外的redis邏輯庫

move(name, db)

類型判斷

type(name)

redis-sentinel哨兵模式下Python操作redis代碼實例

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

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

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

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

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

# redis-cluster集群:https://github.com/Grokzen/redis-py-cluster
# pip install redis-py-cluster
from rediscluster import StrictRedisCluster
#是少要鏈接集群中的一臺數(shù)據庫,可以是多臺,防止有的數(shù)據庫會掛掉
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連接讀寫操作redis的完整代碼實例的詳細內容,更多關于python讀寫redis的代碼實例的資料請關注腳本之家其它相關文章!,希望大家以后多多支持腳本之家!

相關文章

  • django之常用命令詳解

    django之常用命令詳解

    下面小編就為大家?guī)硪黄猟jango之常用命令詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • Python爬蟲防封ip的一些技巧

    Python爬蟲防封ip的一些技巧

    這篇文章主要介紹了Python爬蟲防封ip的一些技巧,對平時學習爬蟲有所幫助,感興趣的朋友可以了解下
    2020-08-08
  • Python交換字典鍵值對的四種方法實例

    Python交換字典鍵值對的四種方法實例

    字典中有成對出現(xiàn)的鍵和值,但是字典中的鍵值對不是都能修改的,只有值才能修改,下面這篇文章主要給大家介紹了關于Python交換字典鍵值對的四種方法,需要的朋友可以參考下
    2022-12-12
  • Python構造自定義方法來美化字典結構輸出的示例

    Python構造自定義方法來美化字典結構輸出的示例

    這篇文章主要介紹了用Python構造自定義方法來美化字典結構輸出的示例,原理就是利用遞歸法來拼接字符串,需要的朋友可以參考下
    2016-06-06
  • Python中數(shù)組遍歷的方法總結

    Python中數(shù)組遍歷的方法總結

    數(shù)組是編程中經常使用的數(shù)據結構,用于存儲和操作一組元素,Python提供了多種方法來遍歷數(shù)組,本文將深入探討這些方法,提供詳細的示例代碼,希望對大家有所幫助
    2023-11-11
  • 解決python父線程關閉后子線程不關閉問題

    解決python父線程關閉后子線程不關閉問題

    這篇文章主要介紹了解決python父線程關閉后子線程不關閉問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • python機器學習基礎K近鄰算法詳解KNN

    python機器學習基礎K近鄰算法詳解KNN

    這篇文章主要為大家介紹了python機器學習基礎K近鄰算法詳解有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2021-11-11
  • Python實現(xiàn)爬取騰訊招聘網崗位信息

    Python實現(xiàn)爬取騰訊招聘網崗位信息

    這篇文章主要介紹了如何用python爬取騰訊招聘網崗位信息保存到表格,并做成簡單可視化。文中的示例代碼對學習Python有一定的幫助,感興趣的可以了解一下
    2022-01-01
  • Django?ORM?事務和查詢優(yōu)化的操作方法

    Django?ORM?事務和查詢優(yōu)化的操作方法

    這篇文章主要介紹了Django?ORM?事務和查詢優(yōu)化,包括事務操作、ORM 惰性查詢及only與defer相關知識,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • python mac下安裝虛擬環(huán)境的圖文教程

    python mac下安裝虛擬環(huán)境的圖文教程

    這篇文章主要介紹了python mac下安裝虛擬環(huán)境 的相關資料,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-04-04

最新評論