我有大约 336 个要删除的键,它们是 SortedSet,我在 Ubuntuserver 上使用 BookSleeve 作为带有 Redis 的 C3 客户端。 下面的代码有效,但如果我删除 Console.WriteLine 它不会随机删除大约 100 个键。它不会引发任何错误,当我在 redis 服务器端打开 Montior 时,我没有看到为那些未从 c# 端删除的用户发送 ZREM 声明。为什么它可以与存在的 Console.Writeline 一起使用,而不是在它被注释掉时让我感到困惑。有任何想法吗?
public virtual void RemoveKey(string item, string id)
{
for (int i = 1; i <= item.Length; i++)
{
Console.WriteLine(PrefixKey + item.Substring(0, i));
_redisClient.SortedSets.Remove(_database,
PrefixKey + item.Substring(0, i), id);
}
}
我有一堂课
public class RedisRepository
{
protected static RedisConnection _redisClient;
protected int _database;
protected bool disposed;
public RedisRepository(int database)
{
string server = ConfigurationManager.AppSettings["redis.server"];
int port = Convert.ToInt32(ConfigurationManager.AppSettings["redis.port"]);
string password = ConfigurationManager.AppSettings["redis.password"];
_redisClient = new RedisConnection(server, port, -1, password);
_database = database;
_redisClient.Open();
}
~RedisRepository()
{
this.Dispose(false);
}
public void Dispose()
{
this.Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (!disposed)
{
if (disposing)
{
_redisClient.CloseAsync(false);
_redisClient.Dispose();
}
// Dispose unmanaged resources here.
}
disposed = true;
}
}
我已将上面的 RedisRpository 类继承到另一个使用其 _redisClient 对象的类中。