簡體   English   中英

Redis - 用 hmset 和 set 存儲字典的區別

[英]Redis - difference between storing dictionary with hmset and set

我剛開始使用 Redis,我想用它來為我正在創建的應用程序存儲有關用戶的臨時數據,所以基本上每個用戶都有一條記錄,用戶名是鍵,值是帶有一些數據的字典,我需要在一段時間后使每條記錄過期,在本例中為 1 分鍾:

from datetime import timedelta
import redis
import json

r = redis.Redis()

r.setex(
   "user_1",
   timedelta(minutes=1),
   value="{'messages': 0, 'channel': xx}"
)

r.setex(
   "user_2",
   timedelta(minutes=1),
   value="{'messages': 0, 'channel': xy}"
)


o = r.get("user_2")

print(o.decode("utf-8"))

因此,如果我正確理解 Redis,我將創建一系列詞典,例如: {"user_1": "{'messages': 0, 'channel': xx}"}等等。 我的問題是:我在做什么和使用hmset之間有什么區別? 我注意到為了存儲字典,一般建議是使用hmset ,但我所做的工作有效,那么有什么區別呢?

如果您想訪問記錄的各個字段,您通常會將數據存儲在 hash map 中。

例如:

redis>  HSET user1 messages "0" channel "xx"

(integer) 1

redis>  HSET user2 messages "0" channel "xx2"

(integer) 1

redis>  HMGET user1 channel

1) "xx2"

另一方面,現在要訪問 user1 的頻道,您需要拉下整個記錄,然后訪問該字段(我不記得您是否需要使用 json.loads 將其轉換回 dict Python)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM