当前位置: 首页 > news >正文

Ngx+Lua+Redis 快速存储POST数据

系统几万台设备有windows有安卓还有linux系统,每个设备三分钟就会向服务器post设备的硬件信息,数据格式json,后台管理界面只需要最新的数据,不需要历史数据,业务逻辑非常简单,PHP代码就几行,已经优化到极致了,但是架不住频率太高了。服务器负载就被这个的简单逻辑给耗尽。历史原因客户端已经不可能修改,只能在服务端进行优化了。

做法也很简单就是不用php-fpm,nginx接收到数据,直接把post数据存储到redis里面,供管理后台直接使用。
ngx如何连接redis请参考我的另一篇文件
Ngx+Lua+Redis 实时IP黑名单系统icon-default.png?t=O83Ahttps://blog.csdn.net/hangbobo/article/details/142763400在这里我只接上代码

local my_cache = ngx.shared.my_cache
local redis_connect=loadstring(my_cache:get("redis_connect"))
local red=redis_connect()
red:hincrby('store_ip:02','hardware',1)local auth_header = ngx.req.get_headers()["Authorization"]
if string.len(auth_header) > 8 thenlocal token = string.sub(auth_header,8)if string.len(token) > 0 thenngx.req.read_body() local data = ngx.req.get_body_data()local cjson = require "cjson.safe"local obj = cjson.decode(data)obj.time=os.date("%Y-%m-%d %H:%M:%S", ngx.time())data=cjson.encode(obj)red:hset('hardware',token,data)ngx.say('{"msg":"succeed","status_code":200,"data":['..data..']}')ngx.exit(200)end
end
ngx.exit(404)

解析json代码并增加当前时间这个是非必须的,只是为了验证数据是不是最新提交的。
我的设备唯id是,通过header头的”Authorization“ 传递的,你需要结合你你的实际代码。

代码存储为 /www/server/nginx/conf/hardware.lua
nginx配置

lua_shared_dict my_cache 10m;
server
{listen 80;listen 443 ssl;http2 on;...........default_type 'application/json';    access_by_lua_file /www/server/nginx/conf/access.lua; location /boxs/hardware {access_by_lua_file /www/server/nginx/conf/hardware.lua;}...........
}


 


http://www.mrgr.cn/news/45506.html

相关文章:

  • 如何使用PSTools工具集中的PSExec修改注册表信息,解决某些注册表项无法删除的问题
  • 以下是一些数据看板的常见使用场景:
  • 招个测试员,我又面试了100+人,未果…
  • 如何在VScode中加入系统安装好的python环境
  • Unity 从零开始的框架搭建1-1 unity中对象调用的三种方式的优缺点分析【干货】
  • PCL 计算法向量(MLS)
  • git commit失败整理
  • FLINK SQL
  • 修改Docker的默认存储路径
  • 个人常用的正则表达式匹配,以及实际应用
  • 【react】开发常用hooks统计
  • 分析和解决js运算精度问题,出现多位小数
  • 算法闭关修炼百题计划(四)
  • 如何下载和安装CLion,图文详解
  • ZCC40036 过压保护芯片
  • 如何优化电源模块自动化测试的硬件设计?-纳米软件
  • C++ 游戏开发中内存管理进阶
  • 云原生周刊:Docker大涨价|2024.10.8
  • 00.DAMA数据管理知识体系[CDGA及考试相关介绍]
  • Kubernetes v1.31“Elli”:云原生领域的十年里程碑式革新!