我想要一个具有最大连接数的 Redis 数据库连接池。看起来Lwt_pool
是我正在寻找的解决方案,但我不太明白它应该如何工作。例如,我有一些问题:
-
文档谈到
Lwt_pool
重用打开的连接很棒,但池如何知道哪些连接可供重用?据我所知,没有特别的方法来发出信号,API 仅提供use
方法。 -
有没有比
Lwt
文档更好的资源来了解它是如何工作的?我不容易找到代码示例或许多可用的资源。
-
传递给
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)