自从工作到现在已经四个月有余了,一直想要分享一下近期的所思所想,记录一下自己的成长,但碍于时间问题,并没有实现。今天终于有时间啦,那我就分享一个最近在做的东西。

目录

需求

做法

问题与解决


需求

从MySQL数据库中多个关联的数据表中查询数据,并缓存到Redis中,并把数据传给前端展示。

做法

  • 写sql查询语句:
       做法1:一条查询语句将所有需要的字段查询出来,需要使用select查询多重嵌套,难度较大;
       做法2:一条简单的查询语句将主表的所需字段查出来,再根据表中与其它表的关联字段使用对应表的DAO去查询其它表的数据。
  • 缓存到Redis:
       做法1:使用循环,然后将查询出来的数据一条条数据解析完成,并保存到Map中,使用RedisTemplate的opsForValue()的set方法缓存:
           缺点:当数据量巨大时,缓存的操作需要很长时间。前端的网页是展示给人看到,对于查看网页的人来说,当等待时间超过2s以上相当影响用户体验。
           优点:操作简单易懂,数据量较少时,并不影响用户体验。
       做法2:将mysql查询得到的数据,整块存到缓存,再在前端解析数据:
           缺点:数据量巨大时,一次性缓存的数据块过大,容易出现问题。
           优点:数据只需一次缓存操作即可完成缓存,极大地降低时间复杂度,并且解析数据的操作和做法1是一样的,并不会增加解析数据难度。
  • Controller类:
       控制类的做法就不多赘述,根据前端需求做对应的接口配置。

    问题与解决

    1.数据缓存和解析,存在性能问题,时间复杂度高:
        解决方法:平时多敲代码,多和同事交流,多积累,有空时可以刷一刷leetcode题目。
        2.数据解析时出现NullPointerException:
        解决方法:过程中碰到空指针异常,经常在数据为空时,还使用某个函数或者方法。首先必须经过 " ! = null "的条件判断;再者碰到toString()的使用时,若不知道取得的数据是否为空时,可以使用" +" " "来转化成String类型,可以避免空指针异常。
        3.总体缓存过期时间标识:
        解决方法:碰到多个统一前缀的缓存数据,需要知道缓存的过期时间问题时,可以考虑增加一个缓存标识,用redisTemplate.opsForValue().set()增加一个缓存标识。
        4.接口刷新频率限制:
        解决方法:可以增加一个缓存标识,每次接收刷新请求时缓存一次刷新的时间,通过对比两次缓存的时间可以限制刷新频率。

MySQL语句查询数据库数据并添加到Redis缓存相关推荐

  1. vbs用mysql语句查询数据库_vbs脚本实现window环境下的mysql数据库的备份及删除早期备份...

    On error resume next Dim oShell,admin,pass,user,db,path,name admin="root" pass="gsl&q ...

  2. mysql语句查询慢造成mysql卡死_MySQL数据库之一次MySQL慢查询导致的故障

    本文主要向大家介绍了MySQL数据库之一次MySQL慢查询导致的故障 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 我们知道分析MySQL语句查询性能的方法除了使用EXPLAI ...

  3. mysql 最多查询数据库_mysql 查询全表某字段值最大的10条数据

    展开全部 select * from 表 order by 要最大值的字段 desc limit 0,10 FILE: 在MySQL服务器上读写文件.62616964757a686964616fe59 ...

  4. Mysql 查询数据库数据量

    Mysql查询数据库数据量 SELECTtable_name AS '表名',table_rows AS '记录数',TRUNCATE (data_length / 1024 / 1024, 2) A ...

  5. ajax连接mysql数据库查询数据_ajax动态查询数据库数据并显示在前台的方法

    今天做了一个ajax动态查询数据库的小Demo,又重新学习了一下ajax的一些知识.在此和大家分享一下...... 啥都别说了,先上代码 Controller层 查询总用户数 @RequestMapp ...

  6. excel mysql 参数查询语句_如何用SQL语句查询Excel数据?

    如何用SQL语句查询Excel数据? Q:如何用SQL语句查询Excel数据? A:下列语句可在SQL SERVER中查询Excel工作表中的数据. 2007和2010版本: SELECT*FROMO ...

  7. excel mysql 参数查询语句_如何用SQL语句查询Excel数据

    Q:如何用SQL语句查询Excel数据? A:下列语句可在SQL SERVER中查询Excel工作表中的数据. 2007和2010版本: SELECT * FROM OpenDataSource( ' ...

  8. 一条SQL语句查询数据库中的所有表、存储过程、触发器

    一条SQL语句查询数据库中的所有表.存储过程.触发器 (sysobjects表信息)   该条语句查询返回所有的用户表 select * from sysobjects where xtype='u' ...

  9. sqlite使用模糊查询数据库数据的三种方式

    android应用开发中常常需要记录一下数据,而在查询的时候如何实现模糊查询呢?很少有文章来做这样的介绍,所以这里简单的介绍下三种sqlite的模糊查询方式,直接上代码把: package com.e ...

最新文章

  1. R语言-查看对象类型和长度
  2. 【POJ】1505 Copying Books
  3. 通话录音_iOS14,通话录音终于来了!
  4. 织梦自定义html文本,织梦自定义标签dede:sql根据自定义字段填的文章id获取相关文章...
  5. IDEA使用笔记(八)——自动生成 serialVersionUID 的设置
  6. wireshark抓包工具的使用及分析
  7. 兄弟3150cdn更换硒鼓_耗材知多点:一体式硒鼓及分离式硒鼓
  8. ios 添加条纹背景
  9. 魅族Flyme5系统内置原生铃声免费下载
  10. matlab2c使用c++实现matlab函数系列教程-floor函数
  11. 用c语言编写文本游戏,如何用C语言编写游戏.doc
  12. qpsk调制matlab仿真,QPSK调制解调仿真
  13. 过保金士顿SA400S37固态硬盘固件通病,不保存盘内数据如何救活?
  14. 联想服务器安装win10系统安装教程,联想win10企业版操作系统安装步骤详解
  15. fluent周期边界_在Fluent中采用TUI设置周期性边界的方法
  16. 华域php公司,华域智能DNS系统
  17. 宋丹丹晒年轻旧照 桃眼杏腮被赞美女
  18. 免费聚合文章dedeCMS采集脚本网页采集器
  19. 在工作中学习到了些什么?
  20. 时间类的12小时制输出

热门文章

  1. 【排序算法】图解直接插入排序(图解堪比Debug显示每次循环结果)
  2. 28岁程序员身家过亿退休,追寻诗和远方:去日本!
  3. Pandas 对DataFrame的缺失值NA值处理4种方法总结
  4. 只有两种直播:淘宝直播和其它直播
  5. linux speedtest-cli测速报错
  6. 如何找课题的综述文献
  7. nodejs+libreoffice 将word转成pdf
  8. 淘宝订单接口|订单插旗备注,淘宝开放平台最稳定的店铺订单接口
  9. MFC修改图标简单方法(包括exe图标,任务栏图标,应用程序运行左上角图标)
  10. java中j=j++和j=++j的理解