分类: Lua
-
文章针对Redis setnx指令无法设置过期时间的问题,提出了三种解决方案。方案一使用Multi/Exec包裹Expire确保原子性;方案二利用SET命令扩展功能实现并引入随机值防止误删;方案三通过时间戳判断与getset避免死锁。分析指出方案三实现复杂且存在并发隐患,最终决定优化方案二,结合MySQL乐观锁解决业务执行超时问题。
-
针对在 OpenResty 中请求 https 网址报错 unable to get local issuer certificate 的问题,通过参考相关技术资料,在 lua-resty-http 发起请求的代码中添加 ssl_verify = false 选项进行配置。修改代码后再次请求 https 网址,未再出现报错,实际运行结果符合预期。
-
在 Windows 10 运行 OpenResty 时遇到 500 Internal Server Error 错误,日志提示 module ‘lib.redis’ not found。通过编辑 Nginx 文件添加 lua_package_path 配置文件寻址路径,重启后发现 ?.lua 被替换为 lib\redis.lua 从而导致路径错误。再次修改配置,删除路径中多余的 /lib 后重启 Nginx 服务器,程序成功运行且不再报错。
-
针对阿里云 Redis 报错 Redis error ERR for redis cluster, eval/evalsha number of keys can’t be negative or zero 的问题,经参考开发者文档分析,这是由于云 Redis 集群对 Lua 脚本有限制,调用时必须携带 key,否则会直接返回错误。文章中采用了放弃使用阿里云 Redis 集群的方式使问题得以解决,并指出后续若要支持 Redis 集群,需要在程序层面进行调整。
