如何在 stackexchange.redi 中使用 ConnectionMultiplexer 中的 KeyScan

how to use KeyScan from ConnectionMultiplexer in stackexchange.redi

我有以下redis连接代码

 private static readonly Lazy<ConnectionMultiplexer> Conn = new Lazy<ConnectionMultiplexer>(
            () =>
            {
                try
                {

                    if (ConfigOptions != null && ConfigOptions.Value != null)
                    {
                        return ConnectionMultiplexer.Connect(ConfigOptions.Value);
                    }
                    return null;

                }
                catch (Exception ex)
                {
                    Logger.Fatal(ex.Message, ex);
                    return null;
                }
            });

        private static ConnectionMultiplexer Muxer => Conn.Value;

        public static bool KeyExists(string key)
        {
            var result = false;
            try
            {
                IDatabase getDatabase;
                if (Muxer != null && (getDatabase = Muxer.GetDatabase()) != null)
                {
                    result = getDatabase.KeyExists(key);
//https://riptutorial.com/stackexchange-redis/topic/66/scan  
                }
            }
            catch (Exception ex)
            {
                Logger.Fatal(ex.Message, ex);
            }
            return result;
        }

键命令是昂贵的命令 知道如何使用在 stackexcahnge 实现中实现的扫描命令作为

public IEnumerable Keys(int database = 0, RedisValue pattern = default(RedisValue), int pageSize = CursorUtils.DefaultPageSize, long cursor = CursorUtils.Origin, int pageOffset = 0, CommandFlags标志 = CommandFlags.None)

来自 Muxer 对象?

Stackexchange.Redis 将在其 Keys 实现中使用 SCAN(如果 Redis 版本 >=2.8)。使其在 Redis 端安全,因为它是非阻塞操作。

不过,您应该确保您的应用可以处理大型回复。 SCAN 迭代是 Stackexchange 内部的,您不能在每次迭代中添加逻辑。

你应该多了解一下 here