我应该多久打开/关闭一次Booksleeve连接?

Pau*_*ski 16 asp.net redis c#-4.0 booksleeve

我在C#/ ASP.NET 4应用程序中使用Booksleeve库.目前,RedisConnection对象是我的MonoLink类中的静态对象.我应该保持这个连接打开,还是应该在每次查询/事务后打开/关闭它(正如我现在所做的那样)?只是略显困惑.这就是我现在使用它的方式:

public static MonoLink CreateMonolink(string URL)
{
    redis.Open();
    var transaction = redis.CreateTransaction();

    string Key = null;

    try
    {
        var IncrementTask = transaction.Strings.Increment(0, "nextmonolink");
        if (!IncrementTask.Wait(5000))
        {
            transaction.Discard();
            throw new System.TimeoutException("Monolink index increment timed out.");
        }

        // Increment complete
        Key = string.Format("monolink:{0}", IncrementTask.Result);

        var AddLinkTask = transaction.Strings.Set(0, Key, URL);
        if (!AddLinkTask.Wait(5000))
        {
            transaction.Discard();
            throw new System.TimeoutException("Add monolink creation timed out.");
        }

        // Run the transaction
        var ExecTransaction = transaction.Execute();
        if (!ExecTransaction.Wait(5000))
        {
            throw new System.TimeoutException("Add monolink transaction timed out.");
        }
    }
    catch (Exception ex)
    {
        transaction.Discard();
        throw ex;
    }
    finally
    {
        redis.Close(false);
    }

    // Link has been added to redis
    MonoLink ml = new MonoLink();
    ml.Key = Key;
    ml.URL = URL;

    return ml;
}
Run Code Online (Sandbox Code Playgroud)

提前感谢任何回复/见解.此外,这个库有哪些官方文档?谢谢你SO ^ _ ^.

bzl*_*zlm 25

根据书架作者,

该连接是线程安全的,旨在大规模共享; 每次操作都不要连接.


yoj*_*o87 8

我应该保持这个连接打开,还是应该在每次查询/事务后打开/关闭它(正如我现在所做的那样)?

如果每次要进行查询/事务时都打开一个新连接,可能会有一点开销,虽然redis是为高级别并发连接的客户端设计的,但如果它们的数量大约为数万,则可能会出现性能问题.据我所知,连接池应该由客户端库完成(因为redis本身没有这个功能),所以你应该检查booksleeve是否支持这些东西.否则,您应该在应用程序启动时打开连接,并在其生命周期内保持打开状态(如果由于某种原因您不需要并行客户端连接到redis).

此外,这个库有哪些官方文档?

我能找到的关于如何使用它的唯一文档是它的源代码中的tests文件夹.