ConnectionMultiplexer的dispose()方法是否刷新所有密钥和它连接的redis数据库?

时间:2017-04-04 10:11:48

标签: c# redis stackexchange.redis

我使用Redis缓存了我的数据库。当我在redis的connectionmultiplexer类的实例上运行dispose()方法时,它不会刷新键和数据库。

---
 private static ConnectionMultiplexer _conn;
private static ConnectionMultiplexer Connection
    {
        get
        {
            lock (Lock)
            {

                    //Close & Dispose Old connection
                    if (_connection != null)
                    {
                           _conn.Close(false);
                           _conn.Dispose();
                           _conn = null;
                    }

                   ---
                   ---

                    return _conn;
            }
        }
    }

问题:这个dispose()方法到底是做什么的?它不应该刷新并清除所有连接到_conn的redis数据库吗?

2 个答案:

答案 0 :(得分:1)

为什么客户端应该自动刷新Redis?

实际上将它用作分布式缓存(许多使用共享缓存的连接客户端......),这个东西是不可用的。

Redis有一个FLUSHFLUSHALL命令,每个服务器都有效,你可以明确地调用它们。

请参阅 https://github.com/StackExchange/StackExchange.Redis/blob/master/Docs/KeysScan.md

答案 1 :(得分:1)

ConnectionMultiplexer上的Dispose(...)操作将关闭连接并释放其他资源,例如与ConnectionMultiplexer对象关联的ServerEndpoint对象。它不会向Redis发出任何命令。

来源在这里:https://github.com/StackExchange/StackExchange.Redis/blob/master/StackExchange.Redis/StackExchange/Redis/ConnectionMultiplexer.cs