问题描述

用户登录系统提示没有权限,导致用户无法使用系统

原因分析:

用户登录的方法A会调用第三方接口获取用户信息,没有对数据进行校验导致。
第三方接口的正确返回的数据格式:

 "status":200,"data":[{“username”:"user007"}]
}

导致bug的数据格式:

 "status":200,"data":[]
}

因为登录方法A使用Cacheable 注解,没有校验data里面的username是否为空就直接放入了redis缓存,所以导致用户在一个小时内都无法使用系统。

解决方案:

因为每次发版都有严格的审批流程,所以,只能先在预发布环境暂时处理,毕竟预发布环境和生产环境使用同一个数据库,等下个版本再完成bugfix功能。

  1. 预发布环境处理:写个删除Redis缓存功能,哪个用户有问题就删除哪个用户的缓存。
  2. 生产环境处理:拿到第三方的接口数据之后,对data进行判断,如果是空就重新请求3次,没有数据就不存入Redis缓存。

一次Spring Cache使用不当带来的生产环境问题相关推荐

  1. 学习笔记:cache 和spring cache 技术(1)

    title: 学习笔记:cache 和spring cache 技术(1) author: Eric liu tags: [] categories: hexo 缓存是实际工作中非常常用的一种提高性能 ...

  2. 注释驱动的 Spring cache 缓存介绍--转载

    概述 Spring 3.1 引入了激动人心的基于注释(annotation)的缓存(cache)技术,它本质上不是一个具体的缓存实现方案(例如 EHCache 或者 OSCache),而是一个对缓存使 ...

  3. Spring Cache

    在WEB后端应用程序来说,耗时比较大的往往有两个地方:一个是查数据库,一个是调用其它服务的API(因为其它服务最终也要去做查数据库等耗时操作).重复查询也有两种.一种是我们在应用程序中代码写得不好,写 ...

  4. 注解驱动的 Spring cache 缓存介绍

    概述 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. Spring 3.1 引入了激动人心的基于注释(annotation)的缓存(cache)技术 ...

  5. 注释驱动的 Spring cache 缓存介绍

    概述 Spring 3.1 引入了激动人心的基于注释(annotation)的缓存(cache)技术,它本质上不是一个具体的缓存实现方案(例如 EHCache 或者 OSCache),而是一个对缓存使 ...

  6. Spring Cache 介绍

    缓存是实际工作中非常常用的一种提高性能的方法, 我们会在许多场景下来使用缓存. 本文通过一个简单的例子进行展开,通过对比我们原来的自定义缓存和 spring 的基于注释的 cache 配置方法,展现了 ...

  7. 玩转Spring Cache --- 整合进程缓存之王Caffeine Cache和Ehcache3.x【享学Spring】

    每篇一句 人到中年就是一部西游记:悟空的压力,八戒的身材,沙僧的发型,唐僧的唠叨 前言 前面文章大篇幅详细讲解了Spring Cache缓存抽象.三大缓存注解的工作原理等等.若是细心的小伙伴会发现:讲 ...

  8. Spring Cache使用Redis自定义缓存key

    一.什么是Spring Cache 从spring 3.1版本开始,提供了一种透明的方式来为现有的spring 应用添加cache.在应用层面与后端存储之间,提供了一层抽象,这层抽象目的在于封装各种可 ...

  9. Spring Cache,从入门到真香

    点击↑上方↑蓝色"编了个程"关注我~ 每周至少一篇原创文章 这是本公众号的第 33 篇原创文章 荒腔走板 西湖 这是前两天我去西湖游玩的时候,玩到了夕阳西下的时间.于是我两就坐在西 ...

最新文章

  1. PAT甲级1051 Pop Sequence:[C++题解]模拟栈、判断序列是否是合法的出栈序列
  2. 找中位数,找第k小,还存在问题
  3. LeetCode 1184. 公交站间的距离
  4. 图论 —— 二分图 —— KM 算法
  5. 增加索引提高查询效率
  6. 学习webbench需要掌握的基础知识(webbench源代码学习心得)
  7. python中type(12.34)_下面代码的输出结果是
  8. 平时多流汗,战时少流血
  9. ios 国外账户的创建
  10. 01-JavaScript基础.md
  11. python087(文件—文件概念以及文本文件和二进制文件的区别)
  12. MySQL- 经典面试题
  13. FSM-Golang
  14. js在指定的td中插入html元素,js在指定位置增加节点函数insertBefore()用法实例
  15. 程序错误类型及其处理
  16. UE4 安卓触摸事件相关问题
  17. NLP竞赛全球亚军,我的科研经验分享
  18. 视频格式: QSV转MP4
  19. 进击的数据分析:像炒菜一样做策略
  20. 万年历:输入year年,month月,显示其日历

热门文章

  1. 这几个方法让你学会PDF尺寸大小怎么调整
  2. VMware中的虚拟机开启VT,支持KVM
  3. Mac与Windows操作系统的区别
  4. 七大基本排序算法(升序排列)
  5. Addressable资源热更新疑问
  6. 解读2018:13家开源框架谁能统一流计算?
  7. 工程职业伦理(2018年秋)学堂在线习题
  8. 聚类分析在用户行为中的实例_聚类分析的简单案例
  9. SSLOJ 1323.交流
  10. 常用照片尺寸和纸张尺寸参考