1

我想要一个具有最大连接数的 Redis 数据库连接池。看起来Lwt_pool是我正在寻找的解决方案,但我不太了解它应该如何工作。例如,我有一些问题:

  • 文档谈到Lwt_pool重用打开的连接非常好,但是池如何知道哪些连接可重用?据我所知,没有特定的方式来表示这一点,API 只提供了use方法。

  • 有没有比Lwt文档更好的资源来了解它是如何工作的?我无法轻易找到代码示例或许多可用资源。

4

1 回答 1

3
  • 您传递给的函数use返回一个线程。当线程完成时,连接被释放回池。

  • 源代码相当容易阅读。在这种情况下:

    let use p f =
      acquire p >>= fun c ->
      Lwt.catch
        (fun () ->
           let t = f c in
           t >>= fun _ ->
           release p c;
           t)
        (fun e ->
           checked_release p c;
           Lwt.fail e)
    
于 2014-12-11T10:54:41.833 回答