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

项目应用多级缓存示例

前不久做的一个项目,需要在前端实时展示硬件设备的数据。设备很多,并且每个设备的数据也很多,总之就是数据很多。同时,设备的刷新频率很快,需要每2秒读取一遍数据。

问题来了,我们如何读取数据,并且在前端展示?

我的想法是利用多级缓存:
1)首先是有个数据采集程序,不停地采集设备的数据。采集到数据以后,写入redis的1号库;
2)WEB后端设置一个定时器,每2秒读一次redids的1号库,处理后写入redis的2号库。之所以要处理一下,是因为1号库的数据比较原始,处理后才适合前端处理
3)前端也设置一个程序,每2秒向后端请求一次数据,后端将redis#2数据返回;前端收到数据后写入前端缓存。我们前端是用vue搞的,所以存入store。
4)前端由很多个组件构成,每个组件都从store中读取数据,然后展示。

系统结构如图所示:
在这里插入图片描述
优点:
1)数据采集程序与WEB前后端解耦,职责单一,除了采集数据,啥都不用管。简单的往往就是最好的,不容易出错
2)后端定期处理原始数据,将结果缓存,当前端请求时,返回缓存中的该结果,减少重复劳动,提高了性能
3)前端虽有多个组件,但不是每一个组件都向后端请求,而是统一请求一次,存入前端缓存,然后全部组件都从前端缓存中读取,对性能是一个保障。

事实证明,这种多级缓存机制下,前端展示数据非常迅速,及时。虽然前端和WEB后端之间没有使用websocket进行数据传输,而是使用了最笨的定期获取,但丝毫没有影响前端的用户体验。

相关文章:

  • python 通过opencv及face_recognition识别人脸
  • VCG Mesh刚性旋转(变换矩阵)
  • 【Java、Python】获取电脑当前网络IP进行位置获取(附源码)
  • ES实用的深度解构赋值方法
  • axios进行图片上传组件封装
  • 【概率统计】生存分析
  • 安装kafka
  • C++ opencv-3.4.1 提取不规则物体的轮廓
  • 初试Kafka
  • 【网络奇缘】——奈氏准则和香农定理从理论到实践一站式服务|计算机网络
  • springboot 查询
  • css mask 案例
  • 13章总结
  • python哈希算法实现
  • 智慧工地项目端监管端一体化SaaS云平台源码(微服务架构)
  • [译]Python中的类属性与实例属性的区别
  • __proto__ 和 prototype的关系
  • crontab执行失败的多种原因
  • HTTP那些事
  • Java 多线程编程之:notify 和 wait 用法
  • java取消线程实例
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • react 代码优化(一) ——事件处理
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • vagrant 添加本地 box 安装 laravel homestead
  • 安装python包到指定虚拟环境
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 从零搭建Koa2 Server
  • 高度不固定时垂直居中
  • 京东美团研发面经
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 每天一个设计模式之命令模式
  • 容器服务kubernetes弹性伸缩高级用法
  • 少走弯路,给Java 1~5 年程序员的建议
  • 再谈express与koa的对比
  • #### go map 底层结构 ####
  • #HarmonyOS:软件安装window和mac预览Hello World
  • (3)llvm ir转换过程
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (二)Eureka服务搭建,服务注册,服务发现
  • (离散数学)逻辑连接词
  • (学习日记)2024.01.19
  • (一)Linux+Windows下安装ffmpeg
  • (转)【Hibernate总结系列】使用举例
  • (转)关于多人操作数据的处理策略
  • .htaccess配置常用技巧
  • .jks文件(JAVA KeyStore)
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .NET 中的轻量级线程安全
  • .NET/C# 获取一个正在运行的进程的命令行参数
  • .net的socket示例
  • .NET中两种OCR方式对比
  • /etc/shadow字段详解