如何获取,从c#中的redis数据库更新所有密钥及其值?

时间:2016-04-26 10:09:35

标签: c# caching redis servicestack.redis nosql

我正在使用servicestack C#驱动程序来连接在6379中运行的redis数据库。 我想从redis数据库(实际上是缓存)中检索(GET / READ)所有密钥及其值。 我必须在redisdb中更新两个键及其值,是否可以在不使用列表或散列类型的情况下进行更新?

我想知道如何添加多个键和值,以及一次更新多个键。

2 个答案:

答案 0 :(得分:0)

对于Redis,您需要多次更新,多次获取和多次添加。您可以将这些命令用于此目的。

  

Mset - 多重集Mget - 多次获取Hmset - 哈希中的多重集。   Msetnx - 如果不存在则设置多个。

答案 1 :(得分:0)

检索所有密钥的最有效方法是使用SCAN API's,例如:

var allKeys = new List<string>();
using (var redis = redisManager.GetClient())
{
    foreach (var key in redis.ScanAllKeys())
    {
        allKeys.Add(key);
    }
}

您可以使用GetValues()获取所有值以返回值列表或GetValuesMap()以返回键值字典,例如:

var allKeyAndValues = redis.GetValuesMap(allKeys);

但是根据您所拥有的按键数量,您需要批量获取它们。

同样,您可以使用SetValues()设置多个键和值,例如:

redis.SetValues(allKeysAndValues);