溫馨提示×

redis mset 可以設置默認值嗎

小樊
81
2024-11-09 22:25:12
欄目: 云計算

MSET 命令用于同時設置多個鍵值對,但它本身不支持為鍵設置默認值

def mset_with_defaults(redis, keys_values, default_value):
    # 獲取所有鍵
    all_keys = list(keys_values.keys())
    
    # 獲取已經(jīng)存在的鍵
    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 設置已經(jīng)存在的鍵的值
    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 的函數(shù),它接受一個 Redis 客戶端、一個包含鍵值對的字典以及一個默認值作為參數(shù)。函數(shù)首先獲取所有要設置的鍵,然后檢查哪些鍵已經(jīng)存在于 Redis 中。接下來,它使用 MSET 命令設置已經(jīng)存在的鍵的值,并使用 HMSET 命令為需要設置的鍵設置默認值。最后,函數(shù)返回所有鍵的值。

0