如何使用OpenResty(nginx)减少数据访问时间

我需要使用nginx根据数据库中的配置信息代理到不同的后端服务器。一种方法是使用另一个程序将数据写入Redis,并使用[OpenResty](https://openresty.org/en/)访问Redis中的数据。

为了减少访问时间,是否有更好的方法来访问数据,比如使用OpenResty将数据存储在本地内存中,并在本地内存中访问该数据?

点赞
用户2060502
用户2060502

OpenResty 中有内置的 键值存储。所有数据通过共享内存在 nginx workers 之间共享,因此访问速度比访问 Redis 更快。

可以在 init_by_lua* 中加载所有需要的值。

可能需要使用一些基于 cosocket 的库来访问数据库,在 init_worker_by_lua* 中 cosocket API 被禁用,但可以通过 workaround 发送一个零延迟的计时器。

为了避免多个 nginx workers 冗余地轮询数据库,只需在 ngx.worker.id == 0 时为 第一个 nginx worker 启动计时器。

当然,这种方法仅适用于静态配置数据。我在许多项目中使用它。

2019-01-03 10:00:57