Skip to main content
列举一些因为缓存导致的各种报错
一些常见问题:
  1. 修改了前端的Theme配置后,页面不生效?
  2. 更新产品版本或者修改了数据库字段后,后端服务报错序列化失败?

缓存类型

在LangChat Pro产品中,存在两种缓存:
  1. 浏览器本身的缓存,LocalStorage、Cookie等
  2. Redis缓存,后端服务写入的缓存

浏览器缓存

主要包含几类:
  1. 登录的Token或者用户信息可能写入到缓存中
  2. 前端项目的Layout、Theme配置会写入缓存
因此当你遇到修改了前端配置不生效等问题,最好清空一次浏览器缓存

Redis缓存

在LangChat Pro产品中,Redis缓存的写入来源主要有几种:
  1. Sa-Token 主动写入的缓存,也就是Auth相关的(如:登录用户信息、Token)
  2. Spring的 @Cacheable 注解,所有包含次注解的函数,都会将返回值写入到Redis
  3. 代码中主动使用 RedisTemplate 对象写入的缓存
在LangChat Pro产品中,几乎所有表的Service层的 getById 函数都会增加 @Cacheable 注解,也就是所有的根据ID查询的函数都会往Redis缓存一次结果(比如模型信息,避免频繁查询mysql) 因此,如果当更新项目导致数据库字段有变更(以及手动操作数据库字段的情况),都可能导致Spring从Redis中反序列化报错。
因此,建议如果升级版本、或者修改数据库,都手动清空一次Redis缓存。