在一个servlet中,Lettuce Redis连接应该在 init()
和关闭 destroy()
还是应该为每个请求创建一个连接(在 doPost
或 doGet
?)
我正在使用同步 RedisCommands
(connection.sync()
)
生菜州:
Lettuce在设计上是线程安全的,这对大多数情况来说已经足够了。所有Redis用户操作都是单线程执行的。使用多个连接不会对应用的性能产生积极影响。使用阻塞操作通常与获得其专用连接的工人线程并行。使用Redis事务是动态连接池的典型用例,因为需要专用连接的线程数量往往是动态的。也就是说,动态连接池化的要求是有限的。连接池总是伴随着复杂度和维护的代价。
如果你打算使用redis事务,那么你必须确保正在进行的事务连接不是共享的,如果不是,那么对于大多数情况下,一个连接就足够了,因为redis是单线程的,无论如何,你的所有命令都会在命令队列中等待。