從redis存取資料的資料轉碼、轉型別問題
阿新 • • 發佈:2018-11-16
初學Redis,做一個固定資料的寫死頁面,每次從MySQL資料庫取值實在是太慢,故選用redis存取。
1、連線資料庫:
import redis
# 與本地redis進行連結,地址為:localhost,埠號為6379
r = redis.StrictRedis(host='地址', port=埠號,password='密碼')
2、存資料:將需要儲存的資料存在redis資料庫(此處儲存的是list列表型別【增刪快、鏈式結構、按插入順序排序】)
#這裡我要將list列表儲存在redis中,先遍歷,然後一個一個從右邊(後面追加)推進redis資料庫中 for item in result: #在name對應的list中新增元素,每個新的元素都新增到列表的最右邊 #資料都儲存在資料庫名字叫“key”的鍵裡 lpush = r.rpush(key,item) #推進一條返回當前行數,未成功則返回0 print("推進去redis", lpush)
3、取資料:
import json #從redis中取出資料 #lrange:list列表型別的取出語法,後面跟0,-1 代表取出全部。 result = r.lrange(key_private_list , 0, -1) #定義一個空列表儲存取出的元素 reallyresult=[] #遍歷取出的全部資料,實際上是列表型別的bytes資料型別 for item in result: try: #要對bytes資料進行轉義,str(item, encoding='utf-8')先轉成字串 #replace("'", "\"").replace("\n", "")將'替換成"方便json轉義,True,False同理 item = str(item, encoding='utf-8').replace("'", "\"").replace("\n", "").replace("True", "true").replace("False", "false") #json.loads()函式是將json格式資料轉換為字典(可以這麼理解,json.loads()函式是將字串轉化為字典) item = json.loads(item) #空列表追加資料 reallyresult.append(item) except Exception as err: #丟擲錯誤 raise err #最後得到的reallyresult是取出的列表。
以上只是redis的value是list列表型別的資料存取,String、Set等資料型別同理。