内容提要
在APISIX 3.10.0版本中,lrucache结合了resty-lrucache和resty-lock机制。创建时可设置类型、容量和过期时间,默认插件类型容量为8,其他类型为1024,过期时间分别为5分钟和60分钟。fetch_valid_cache函数用于获取缓存,若未命中则调用create_obj_fun创建并缓存对象。plugin_ctx函数用于插件缓存对象,需在公共模块中使用extra_key以避免不同插件获取相同对象。
关键要点
-
APISIX 3.10.0版本中,lrucache结合了resty-lrucache和resty-lock机制。
-
创建lrucache时可设置类型、容量和过期时间,默认插件类型容量为8,其他类型为1024,过期时间分别为5分钟和60分钟。
-
fetch_valid_cache函数用于获取缓存,未命中时调用create_obj_fun创建并缓存对象。
-
plugin_ctx函数用于插件缓存对象,需在公共模块中使用extra_key以避免不同插件获取相同对象。
-
serial_creating选项决定是否在lrucache流程中上锁,确保缓存对象的串行创建。
-
fetch_valid_cache函数处理缓存命中和过期逻辑,支持使用陈旧值的配置。
-
提供了一个快捷创建插件lrucache的函数,简化了缓存对象的创建过程。
-
使用plugin_ctx时需注意extra_key的设置,以避免不同插件间的资源冲突。
延伸问答
APISIX中的lrucache是什么?
lrucache是APISIX 3.10.0版本中结合了resty-lrucache和resty-lock机制的缓存管理工具。
如何创建lrucache?
创建lrucache时可以设置类型、容量和过期时间,默认插件类型容量为8,其他类型为1024,过期时间分别为5分钟和60分钟。
fetch_valid_cache函数的作用是什么?
fetch_valid_cache函数用于获取缓存,如果未命中则调用create_obj_fun创建并缓存对象。
plugin_ctx函数如何避免资源冲突?
plugin_ctx函数使用extra_key参数来生成唯一的缓存标识,从而避免不同插件获取相同对象导致的资源冲突。
serial_creating选项的作用是什么?
serial_creating选项决定是否在lrucache流程中上锁,以确保缓存对象的串行创建,避免竞争条件。
lrucache的过期时间是如何设置的?
lrucache的过期时间可以通过创建时的opts参数设置,插件类型默认过期时间为5分钟,其他类型为60分钟。