kong-pongo shared memory cache为“孔猿共享内存缓存”,其实现方式可以采用Redis作为缓存服务器,在Nginx中使用ngx_shared_memory_module模块访问共享内存。具体代码示例如下:
首先,需要安装Redis和Nginx:
sudo apt-get install redis-server nginx
在Nginx的配置文件中加入以下内容:
http {
...
定义共享内存区域
支持1MB的缓存
最多有1000个缓存键
缓存键的长度不超过50个字符
键值对有效期为10秒
键值对数量超过1000时自动回收
键值对数量超过900时开始警告
默认1个缓存实例
缓存键的哈希函数为ngx_crc32_short
内存对齐为64字节
缓存区域名为kong_pongo_cache
参考文档:http://nginx.org/en/docs/http/ngx_http_upstream_module.html#shared_zone
在Nginx中使用共享内存需要启用以下模块:
ngx_http_upstream_module
ngx_http_memcached_module
ngx_http_memcached_module
ngx_http_realip_module
ngx_http_stub_status_module
可以在编译Nginx时使用以下命令启用这些模块:
./configure --add-module=/path/to/module
或者通过第三方包管理器安装编译好的Nginx
Ubuntu: sudo apt-get install nginx-full
定义一个共享内存区域 kong_pongo_cache 共享整个 Nginx 服务进程
注意:如果有多个 worker,这里只粗略地除以 worker 个数,因为每个 worker 会有独立的共享内存缓存
使用一个 1MB 的共享内存,允许最多 1000 个 key 存在
缓存键最大长度为50,缓存有效期为10秒
指定使用 ngx_crc32_short 算法计算哈希值,对键进行分片存储
ngx_http_memcached_module 作为缓存管理模块
启用压缩算法 zlib
一旦缓存项超过1000个,就开始自动回收缓存。
如果缓存项数量超过900个,则记录日志
接下来使用 $kong_pongo_cache 变量引用这个共享内存区域
另外一些注意事项:
不要在 upsteam 中使用 $kong_pongo