MSET
命令用于同時設置多個鍵值對,但它本身不支持為鍵設置默認值
def mset_with_defaults(redis, keys_values, default_value):
# 獲取所有鍵
all_keys = list(keys_values.keys())
# 獲取已經存在的鍵
existing_keys = redis.keys(all_keys)
# 計算需要設置的鍵
keys_to_set = [key for key in all_keys if key not in existing_keys]
# 如果沒有需要設置的鍵,直接返回
if not keys_to_set:
return
# 使用 MSET 設置已經存在的鍵的值
redis.mset({key: keys_values[key] for key in existing_keys})
# 使用 HMSET 為需要設置的鍵設置默認值
redis.hmset({key: default_value for key in keys_to_set})
# 示例
import redis
r = redis.Redis()
keys_values = {'key1': 'value1', 'key2': 'value2'}
default_value = 'default_value'
mset_with_defaults(r, keys_values, default_value)
print(r.mget('key1', 'key2', 'key3')) # 輸出: b'value1' b'value2' b'default_value'
在這個示例中,我們定義了一個名為 mset_with_defaults
的函數,它接受一個 Redis 客戶端、一個包含鍵值對的字典以及一個默認值作為參數。函數首先獲取所有要設置的鍵,然后檢查哪些鍵已經存在于 Redis 中。接下來,它使用 MSET
命令設置已經存在的鍵的值,并使用 HMSET
命令為需要設置的鍵設置默認值。最后,函數返回所有鍵的值。