天天看點

如何通過Python将JSON格式檔案導入redis

本文分享自華為雲社群《Python将JSON格式檔案導入 redis,多種方法-雲社群-華為雲》,作者: 夢想橡皮擦 。

在導入前需要先确定你已經安裝 Redis,并且可以啟動相關服務。

windows 上啟動 redis 的指令是 redis-server.exe redis.windows.conf,效果圖如下:

如何通過Python将JSON格式檔案導入redis

使用 Python 連接配接 redis

如果希望将 JSON 檔案導入到 Redis 中,首先要做的就是連接配接到 redis 服務,實作步驟如下所示。

安裝 redis 與 導入

安裝 redis 庫

pip install redis
           

導入 redis 庫

import redis
           

使用代碼連接配接 Redis

通過 redis 庫的 Redis 類連接配接 Redis 伺服器。

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

連接配接到本地 Redis 伺服器,并使用預設端口 6379,連接配接到資料庫 0,這裡建議使用 redis desktop 工具同步進行連接配接測試。

如何通過Python将JSON格式檔案導入redis

寫入鍵值

連接配接成功後,可以使用 Redis 的指令來操作資料,例如設定鍵值對:

import redis
r = redis.Redis(host='localhost', port=6379, db=15)
r.set('name', '夢想橡皮擦')

print(r)
           

可以在可視化工具中檢視到資料已經寫入。

如何通過Python将JSON格式檔案導入redis

擷取鍵值

r.get('name')
           

基礎準備好,接下來就将 JSON 檔案一次性的寫入到 redis 中。

操作 JSON 檔案寫入 redis

首先使用 json.load() 方法讀取 JSON 檔案,首先看一下 JSON 檔案内容。

如何通過Python将JSON格式檔案導入redis

JSON 最外層是一個清單,其中每一個元素都是對象,我們需要将每個對象都插入到 redis 中,形成 使 Redis 的哈希表。

完整代碼如下所示:

import redis
import json
r = redis.Redis(host='localhost', port=6379, db=15)
with open('travel.json', 'r',encoding='utf-8') as file:
    data = json.load(file)

for item in data:
    r.lpush('travel', json.dumps(item))
           

先看一下插入之後的結果。

如何通過Python将JSON格式檔案導入redis

上述代碼是将 JSON 檔案中的每一項都轉換為字元串,然後以 lpush 方式插入到隊列的左側,也可以使用 rpush 進行插入。

如果希望以鍵值對形式進行插入,需要使用 hset() 方法,參考代碼如下所示。

import redis
import json
r = redis.Redis(host='localhost', port=6379, db=15)
with open('travel.json', 'r',encoding='utf-8') as file:
    data = json.load(file)

for index,item in enumerate(data):
    r.hset('travel', index, json.dumps(item))
           

可以看到此時 redis 中存儲了 key 和 value 。

如何通過Python将JSON格式檔案導入redis

r.hset(name, key, value) 方法是 Redis 哈希表指令之一,用于将指定的鍵和值添加到 Redis 哈希表中。

  • 參數說明如下:name:哈希表的名稱。key:要添加的鍵。value:要添加的值。

它傳回一個整數,表示添加的鍵值對是否是該哈希表的新鍵值對。

如果傳回 1,表示新鍵值對已添加;

如果傳回 0,表示鍵已經存在,并且值已被更新。

關注#華為雲開發者聯盟# 點選下方,第一時間了解華為雲新鮮技術~

華為雲部落格_大資料部落格_AI部落格_雲計算部落格_開發者中心-華為雲