1.redis集群信息保存在consul中
consul操作具体看:https://blog.csdn.net/jilangyu123/article/details/100670080
curl -X PUT -d '47.111.148.7:7391' http://127.0.0.1:8700/v1/kv/redis_cluster/1
2.引入redis相关的lua扩展(nginx的http中)
lua_package_path "/lua-package/lua-resty-lock-0.07/lib/?.lua;;/lua-package/lua-resty-redis-0.26/lib/?.lua;;/lua-package/resty-redis-cluster-master/lib/?.lua;;/lua-package/lua-resty-http-0.12/lib/?.lua;;/lua-package/lua-resty-template-1.9/lib/?.lua;;";
#连接redis集群,需要进行gcc 集群扩展下redis.c 生成so文件,动态生成c链接库用于lua加载 gcc SOURCE_FILES -fPIC -shared -o TARGET
lua_package_cpath "/lua-package/resty-redis-cluster-master/lib/?.so;;";
lua_shared_dict redis_cluster_slot_locks 100k; #共享内存,redis集群定义需要
3.在相对应的代码块引入lua,并请求redis
content_by_lua_file "/nginx/lua/template.lua";
4.请求redis
local redis_cluster = require "rediscluster"
local red_c = redis_cluster:new(config)
local v, err = red_c:get("a")
if err then
ngx.log(ngx.ERR, "err:get: ", err)
else
ngx.say(v)
end