Python進階學習_鏈接操做Redis數據庫

安裝導入第三方模塊Redis

pip3 install redis

import redis 

操做String類型

""" redis 基本命令 String set(name, value, ex=None, px=None, nx=False, xx=False) 在 Redis 中設置值,默認,不存在則建立,存在則修改。 參數: ex - 過時時間(秒) px - 過時時間(毫秒) nx - 若是設置爲True,則只有name不存在時,當前set操做才執行 xx - 若是設置爲True,則只有name存在時,當前set操做才執行 redis 取出的結果默認是字節,咱們能夠設定 decode_responses=True 改爲字符串。 """ redis = redis.Redis(host="116.62.13.104", port=6379, decode_responses=True) # python-k1 表明key; hello 表明 value; ex表明seconds;px表明ms redis.set("python-k1","hello",ex=120) # 獲取值的第一種方式 使用 redis.get("key") print(redis.get("python-k1"),type(redis.get("python-k1"))) # 獲取值的第二種方式 直接使用 redis['key'] print(redis['python-k1'],type(redis['python-k1'])) 

在這裏插入圖片描述

鏈接池

redis-py 使用 connection pool 來管理對一個 redis server 的全部鏈接,避免每次創建、釋放鏈接的開銷。python

""" 鏈接池 redis-py 使用 connection pool 來管理對一個 redis server 的全部鏈接,避免每次創建、釋放鏈接的開銷。 默認,每一個Redis實例都會維護一個本身的鏈接池。能夠直接創建一個鏈接池,而後做爲參數 Redis,這樣就能夠實現多個 Redis 實例共享一個鏈接池。 """ pool = redis.ConnectionPool(host='116.62.13.104', port=6379, decode_responses=True) redis = redis.Redis(connection_pool=pool) 

完整代碼

# author: LiuShihao # data: 2020/12/3 2:59 下午 # youknow: 各位老鐵,個人這套代碼曾經有人出價三個億我沒有賣,現在拿出來和你們分享,不求別的,只求你們免費的小紅心幫忙點一點,這裏謝過了。 # desc: Python操做Redis """ 經過 get()、set() 操做redis字符型數據; 經過 hset()、hget() 操做redis哈希類型數據 經過 json.dumps() 和 json.loads() 能夠實現python中的字典數據的序列化和反序列化; """ import redis import traceback # redis = redis.Redis(host="116.62.13.104", port=6379, decode_responses=True) """ 鏈接池 redis-py 使用 connection pool 來管理對一個 redis server 的全部鏈接,避免每次創建、釋放鏈接的開銷。 默認,每一個Redis實例都會維護一個本身的鏈接池。能夠直接創建一個鏈接池,而後做爲參數 Redis,這樣就能夠實現多個 Redis 實例共享一個鏈接池。 """ pool = redis.ConnectionPool(host='116.62.13.104', port=6379, decode_responses=True) redis = redis.Redis(connection_pool=pool) """ redis 基本命令 String set(name, value, ex=None, px=None, nx=False, xx=False) 在 Redis 中設置值,默認,不存在則建立,存在則修改。 參數: ex - 過時時間(秒) px - 過時時間(毫秒) nx - 若是設置爲True,則只有name不存在時,當前set操做才執行 xx - 若是設置爲True,則只有name存在時,當前set操做才執行 redis 取出的結果默認是字節,咱們能夠設定 decode_responses=True 改爲字符串。 # 獲取值的第一種方式 使用 redis.get("key") print(redis.get("python-k1"),type(redis.get("python-k1"))) # 獲取值的第二種方式 直接使用 redis['key'] print(redis['python-k1'],type(redis['python-k1'])) """ # 獲取全部的key名 def findAllKeys(): keyList = redis.keys() for item in keyList: print(item) # 獲取全部的鍵值對 def findAllKeyAndValue(): # keyAndValue = [] keyList = redis.keys() for item in keyList: print(item) value = redis[item] # d=dict(item=value) d= {item:value} print(d) # keyAndValue.append(d) if __name__ == '__main__': # redis.set('PK2','PV2') # value = redis.get('PK2') # print('值:',value) findAllKeyAndValue() # print("鍵值對:",keyAndValue) 

Bug redis.exceptions.ResponseError

在這裏插入圖片描述
報錯信息:linux

redis.exceptions.ResponseError: MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk. Commands that may modify the data set are disabled, because this instance is configured to report errors during writes if RDB snapshotting fails (stop-writes-on-bgsave-error option). Please check the Redis logs for details about the RDB error. 

 

報錯緣由:
強制把redis快照關閉了致使不能持久化的問題。
解決方法:
在linux下經過redis-cli鏈接redis進行數據庫操做:redis

redis-cli config set stop-writes-on-bgsave-error no 

在這裏插入圖片描述

相關文章
相關標籤/搜索