• 场景:多设备连接服务器不停的向数据库写数据,并发量高,CPU高负载,可能会出现风险,凌晨设备连接数降低,CPU较低
  • 解决方案:白天高并发数据写入redis暂时保存,凌晨CPU低负载时进行定时写入数据库
  • 出现问题:平台部分模块需要查询实时数据,redis对于多条件查询支持不友好,需要查询数据字段和时间范围
  • 解决思路:redis中字段查询比较简单,redis中范围查询可以使用zset有序集合,将两者产生映射关系模拟成数据库功能
  • redis数据结构设计:设计一个设备表hash类型,设计一个数据表zset score为时间戳

redis表设计

hash表设计

  • hash作为主表,日志文件一般有许多同一设备上报数据,我们将设备id作为hash表的key,value中记录映射表的类型和设备id申城的唯一码作为映射表的key

zset表设计

  • zset表保存每个设备的上报信息,score保存时间戳,用于时间条件查询

查询过程:先根据设备id在hash表中查询到tableId,通过拿到的tableId去查询zset集合,再通过score即写入的时间戳进行范围查询,即完成通过一字段和时间范围进行筛选

如果只查询时间范围,那么只需要查询zset所在的redis的分区库,查询出所有的key,再循环进行根据时间查询数据保存。

虽然已经可以完成当成数据库的简单查询操作,但是很多操作还是不如数据库方便

每一个日志类型的集合数据最好放在redis中的一个分区,便于集合数据的直接查询

$redis->hGet('acclog','11G0140IA226655');//获取设备表信息
$redis->zRangeByScore('03be3b6e77bc13b37af345909053061c',1577808134,1577808357);//时间范围查询

redis当成数据库使用,时间范围查询相关推荐

  1. Redis使用场景一,查询出的数据保存到Redis中,下次查询的时候直接从Redis中拿到数据。不用和数据库进行交互。...

    maven使用: <!--redis jar包--><dependency><groupId>redis.clients</groupId><ar ...

  2. redis 时间范围查询

    这算是一种变相的在redis上面实现时间范围查询. 我的使用场景介绍一下:redis在我们的项目里面是用来存储实体映射关系,比如 user>pc这种一度关联, 会统计某一个用户在一段时间内总共有 ...

  3. mysql 检索操作时间段_postgresql数据库使用说明_实现时间范围查询

    按照日期查询通常有好几种方法: 按照日期范围查询有好几种方法,日期字段类型一般为: Timestamp without timezone 方法一: select * from user_info wh ...

  4. redis 和 数据库mysql之间的关系

    https://www.zhihu.com/question/20734566 https://www.zhihu.com/question/19660689 http://blog.csdn.net ...

  5. Redis与数据库缓存一致性问题

    一.Redis 数据一致性问题产生的原因 对 Redis和数据库的操作有 2 种方案: 1.先操作(删除) Redis,再操作数据库 2.先操作数据库,再操作(删除) Redis 上述二种方案,都希望 ...

  6. Redis 缓存数据库

    Redis 缓存数据库 第1章 Redis简介: redis是使用C语言编写的开源的,支持网络,基于内存,可持久性的键值对存储数据库,2013年5月之前,Redis是最流行的键值对存储数据库 Redi ...

  7. Redis和数据库 数据同步问题

    Redis和数据库同步问题 缓存充当数据库 比如说Session这种访问非常频繁的数据,就适合采用这种方案:当然了,既然没有涉及到数据库,那么也就不会存在一致性问题: 缓存充当数据库热点缓存 读操作 ...

  8. Redis和数据库的结合

    使用 Redis 可以优化性能,但是存在 Redis 的数据和数据库同步的问题,这是我们需要关注的问题.假设两个业务逻辑都是在操作数据库的同一条记录,而 Redis 和数据库不一致. Redis 和数 ...

  9. 一条SQL完成跨数据库实例Join查询

    2019独角兽企业重金招聘Python工程师标准>>> 背景 随着业务复杂程度的提高.数据规模的增长,越来越多的公司选择对其在线业务数据库进行垂直或水平拆分,甚至选择不同的数据库类型 ...

最新文章

  1. 70.打印所有Spring boot载入的bean【从零开始学Spring Boot】
  2. Nagios+mutt+msmtp 无法发送邮件的问题!
  3. 恕我直言,牛逼哄哄的MongoDB你可能只会30%
  4. 使用soundcard在Python中操作声卡
  5. docker系列之安装配置-2
  6. 99行不用指针 c语言贪食蛇,关于C语言指针的问题
  7. C++——有关chrono库的duration
  8. matlab 调整灰度,matlab灰度图像调整及imadjust函数的用法详解
  9. (35)VHDL实现JK触发器
  10. 如何处理Spring、Ibatis结合MySQL数据库使用时的事务操作
  11. WPF Name与x:Name 使用
  12. TiledMap使用笔记
  13. cmd运行javac解析中文乱码
  14. linux中安装搜狗拼音输入法
  15. 竹间智能:人机交互未来如何改变人类生活
  16. 组装电脑超详细步骤(超多图+用了2个小时写的)
  17. 西门子杯大赛比赛总结与体会
  18. Neo4j:入门基础(八)之Traversal API
  19. poscms统计数据调用
  20. 【数学建模笔记】对策论

热门文章

  1. Word文档不能编辑?
  2. Simple Koch curve
  3. 第二周预习:异常类,常用类,容器
  4. UI设计师ps的使用,产品经理
  5. 懒逼 神经所 蒲慕明_中科院神经所所长蒲慕明:在祖国的工作是最大的贡献
  6. 闲话中国人的竖式乘法和埃及人的二分乘法
  7. 工作十年以后,你们悟出了什么职场道理?
  8. 怎么批量取消Excel文件中的上下标
  9. eslint一直报CRLF/LF的linebreak错误
  10. 每秒100W请求,携程如何支撑十一假期,抢票系统的?