Hi,ALL:
目前我们尝试使用lua_shared_dict作为业务数据的local cache作为一级缓存,看之前 @agentzh 对lua_shared_dict有过介绍(https://groups.google.com/forum/#!topic/openresty/cDJeg2UqEF4)。
同时也提到过: “lua_shared_dict是通过紅黑树+自旋鎖来达成的,当并发增大或是更新量增大时, 自旋鎖可能有问题”。我们的业务数据在lua_shared_dict只有插入、高频访问和LRU自动淘汰、没有更新操作,
因此不太确定是否lua_shared_dict适用于我们的业务场景。各位是否有这方面的使用经验?
感谢 @agentzh 的答复,还有一个小疑问,lua_shared_dict是基于红黑树+自旋锁实现,看源码好像是每次set和get操作都会针对整棵树上锁,而不是基于插入的key的锁吧?
好像是说:当通过LRU去淘汰数据时,如果remove掉10个元素内存还是不够的话仍然会抛出 no memory的异常,想确认下我上面写入失败的原因是否可能是由于这个策略导致的呢?谢谢!