文章分类 - 项目
摘要:缓存穿透 缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库。 解决方案 缓存空对象 优点:实现简单 缺点:额外的内存消耗,可能造成数据短期的不一致(数据库已经更新了,但查缓存的时候还是 Null ) 布隆过滤 优点:内存占用较少,没有多余key 缺
阅读全文
摘要:缓存更新策略 缓存更新关注的是一致性问题,即缓存中的数据和数据库中的数据是否相同,而不考虑缓存是否能够更多的命中,即不考虑系统的性能(高可用性) 对于店铺类型的缓存,由于店铺类型不经常变动,即读操作远高于写操作的数量,因此对于一致性要求不高,而对于店铺详情信息,则对一致性具有较高的要求,因为店铺的电
阅读全文
摘要:查询商铺缓存 流程图如下: 首先通过前端传来的商铺 id 查询 redis 中是否缓存了该 id 对应的商铺信息,若存在则直接返回该商铺信息;若不存在,则去数据库中查;若数据库中存在,则将商铺数据写入 redis 中并返回给前端,否则返回404,表示查询错误。 实现代码如下: Controller端
阅读全文
摘要:基于session共享实现登录流程存在的问题 由于多台Tomcat并不共享session存储空间,当请求切换到不同tomcat服务时会导致数据丢失的问题。虽然可以通过多台Tomcat共享, 但这会导致数据不一致问题, 同时还会占用更多内存空间。 基于redis实现登录流程 同样分为三部分:发送短信验
阅读全文
摘要:1.1 基于Session实现登录流程 主要分为三部分:发送短信验证码、短信验证码登录注册、校验登录状态 发送短信验证码 流程图如下: 首先获取前端发送过来的手机号,然后判断其是否合法,若合法,则发送生成的验证码,并将发送的验证码进行保存,用于之后对验证码的校验。 实现代码如下: Controlle
阅读全文