首页 > 解决方案 > 如何从 C# 中的 Redis 缓存中获取所有键值?

问题描述

我有 redis 缓存,我在其中设置了几个键,现在我需要获取所有键及其值。似乎没有直接的方法可以得到这个。

我只能看到StringGet(string key)以键为参数的方法。但是没有所有键的方法

编辑:

我已经绑定了下面的代码,但它在第 3 行给出了异常。

ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost");
IDatabase db = redis.GetDatabase();

var keys = redis.GetServer("localhost").Keys();

string[] keysArr = keys.Select(key => (string)key).ToArray();

foreach (string key in keysArr)
{
    Console.Write(db.StringGet(key));
}

例外:

未定义指定的端点

标签: c#redisstackexchange.redis

解决方案


您可以调用该Keys方法来获取所有密钥,记住您需要传入allowAdmin=true"Connect方法。

using (ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost:6379,allowAdmin=true"))
        {
            IDatabase db = redis.GetDatabase();

            var keys = redis.GetServer("localhost", 6379).Keys();

            string[] keysArr = keys.Select(key => (string)key).ToArray();

            foreach (string key in keysArr)
            {
                Console.WriteLine(db.StringGet(key));
            }
        }

推荐阅读