我需要根据数据库中的配置信息使用nginx代理到不同的后端服务器。一种方法是使用另一个程序在Redis中写入数据,并使用OpenResty在Redis中访问数据。
为减少访问时间,是否有更好的方法来访问数据,例如使用OpenResty将数据存储在本地内存中并在本地内存中访问该数据?
答案 0 :(得分:0)
OpenResty具有内置key-value storage。所有数据都是通过共享内存在Nginx Worker之间共享的,因此比访问Redis更快。
可以将所有必需的值加载到init_by_lua*中。
可能您将需要使用一些基于cosocket的库来访问数据库,而cosocket API在 init_worker_by_lua*,但您可以将延迟为零的计时器触发为workaround。
为避免多个nginx工作者进行冗余数据库轮询,您可以仅在ngx.worker.id == 0
时启动first nginx worker的计时器。
当然,此方法仅适用于静态配置数据。我在许多项目中都使用它。