redis当成数据库使用,时间范围查询
- 场景:多设备连接服务器不停的向数据库写数据,并发量高,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当成数据库使用,时间范围查询相关推荐
- Redis使用场景一,查询出的数据保存到Redis中,下次查询的时候直接从Redis中拿到数据。不用和数据库进行交互。...
maven使用: <!--redis jar包--><dependency><groupId>redis.clients</groupId><ar ...
- redis 时间范围查询
这算是一种变相的在redis上面实现时间范围查询. 我的使用场景介绍一下:redis在我们的项目里面是用来存储实体映射关系,比如 user>pc这种一度关联, 会统计某一个用户在一段时间内总共有 ...
- mysql 检索操作时间段_postgresql数据库使用说明_实现时间范围查询
按照日期查询通常有好几种方法: 按照日期范围查询有好几种方法,日期字段类型一般为: Timestamp without timezone 方法一: select * from user_info wh ...
- redis 和 数据库mysql之间的关系
https://www.zhihu.com/question/20734566 https://www.zhihu.com/question/19660689 http://blog.csdn.net ...
- Redis与数据库缓存一致性问题
一.Redis 数据一致性问题产生的原因 对 Redis和数据库的操作有 2 种方案: 1.先操作(删除) Redis,再操作数据库 2.先操作数据库,再操作(删除) Redis 上述二种方案,都希望 ...
- Redis 缓存数据库
Redis 缓存数据库 第1章 Redis简介: redis是使用C语言编写的开源的,支持网络,基于内存,可持久性的键值对存储数据库,2013年5月之前,Redis是最流行的键值对存储数据库 Redi ...
- Redis和数据库 数据同步问题
Redis和数据库同步问题 缓存充当数据库 比如说Session这种访问非常频繁的数据,就适合采用这种方案:当然了,既然没有涉及到数据库,那么也就不会存在一致性问题: 缓存充当数据库热点缓存 读操作 ...
- Redis和数据库的结合
使用 Redis 可以优化性能,但是存在 Redis 的数据和数据库同步的问题,这是我们需要关注的问题.假设两个业务逻辑都是在操作数据库的同一条记录,而 Redis 和数据库不一致. Redis 和数 ...
- 一条SQL完成跨数据库实例Join查询
2019独角兽企业重金招聘Python工程师标准>>> 背景 随着业务复杂程度的提高.数据规模的增长,越来越多的公司选择对其在线业务数据库进行垂直或水平拆分,甚至选择不同的数据库类型 ...
最新文章
- 70.打印所有Spring boot载入的bean【从零开始学Spring Boot】
- Nagios+mutt+msmtp 无法发送邮件的问题!
- 恕我直言,牛逼哄哄的MongoDB你可能只会30%
- 使用soundcard在Python中操作声卡
- docker系列之安装配置-2
- 99行不用指针 c语言贪食蛇,关于C语言指针的问题
- C++——有关chrono库的duration
- matlab 调整灰度,matlab灰度图像调整及imadjust函数的用法详解
- (35)VHDL实现JK触发器
- 如何处理Spring、Ibatis结合MySQL数据库使用时的事务操作
- WPF Name与x:Name 使用
- TiledMap使用笔记
- cmd运行javac解析中文乱码
- linux中安装搜狗拼音输入法
- 竹间智能:人机交互未来如何改变人类生活
- 组装电脑超详细步骤(超多图+用了2个小时写的)
- 西门子杯大赛比赛总结与体会
- Neo4j:入门基础(八)之Traversal API
- poscms统计数据调用
- 【数学建模笔记】对策论