zoukankan      html  css  js  c++  java
  • Redis 缓存数据库的使用场景

    # 一、痛点即需求  

    一次新需求中,我需要在页面上动态展示一些统计性的数据,并且定时刷新实时数据。起初,在开发过程中直接使用Sql查询数据库,返回数据给页面进行渲染。

    但是,实际生产环境中,查询的数据量非常大,导致每次查询数据库都要耗时很久,并且页面久久未响应,容易卡死。后来想到了,将第一次查询的数据放入redis缓存,后面的数据直接去redis中拿到最终结果,就连中间的逻辑过程都省了。这样子,重新查看一次请求的耗时,发现,能够减少几十倍。

    关于,如何刷新缓存嘛?  我写了一个定时器去间隔性的查询数据库,然后放入缓存,以供页面请求直接到缓存中读取数据。 


    # 二、落地方案

    Redis支持5种数据类型的存储,且都是以key-value 形式存储在数据库中的。其中Hash以存储对象为主,其他4中类型都存储的是String类型的数据。

    但是Hash存储的数据无法可视化(即不能直接看到内存中存储的是什么,数据以二进制格式存储)。并且,使用起来不是很方便。

    所以,我选择了将,List结合转换成(使用FastJson.toJsonString)Json字符串,然后使用Spring 提供的StringRedisTemplate ,将我要的数据存储在Redis缓存中。

    需要读取数据的时候,将读取出的Json ,通过JsonArray.parse ,重新转换成List对象。注意: 经过序列化和反序列化。list的元素的顺序可能发生变化。

    所以如果需要排序,那么此时,可以使用Java8 的Stream API ,进行重新排序。 还可以使用List.subList ,进行元素的截取。

    喜欢出发、喜欢离开、喜欢不一样的事物。——May
  • 相关阅读:
    Json
    JQuery的validate不起作用的情况
    ajax的同步异步
    Bootstrap--switch
    Bootstrap--multiselect
    ArcGIS地图打印那些事
    openlayers调用瓦片地图分析
    多种在线地图综合对比,Google,必应,arcgis Online...
    map的infowindow的show事件(ArcGIS API for JS)
    在ArcGIS中导出现有mxd的style文件
  • 原文地址:https://www.cnblogs.com/I-Say/p/13896738.html
Copyright © 2011-2022 走看看