【问题标题】:How to get ,update all keys and its values from redis database in c#?如何在 c# 中从 redis 数据库中获取、更新所有键及其值?
【发布时间】:2016-08-20 02:20:59
【问题描述】:
我正在使用 servicestack C# 驱动程序来连接在 6379 中运行的 redis 数据库。
我想从 redis 数据库(实际上是缓存的)中检索(GET/READ)所有键及其值。
我必须在 redisdb 中更新两个键及其值,是否可以在不使用列表或哈希类型的情况下进行更新?
我想知道如何添加多个键和值以及一次更新多个。
【问题讨论】:
标签:
c#
caching
redis
servicestack.redis
nosql
【解决方案1】:
对于 Redis,您需要多次更新、多次获取和多次添加。您可以为此目的使用这些命令。
Mset - 多个集合 Mget - 多个获取 Hmset- 哈希中的多个集合。
Msetnx - 如果不存在,则为多个集。
【解决方案2】:
检索所有密钥的最有效方法是使用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);