如何在 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。
我有以下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。