Redis面试必知必会
1. 在项目中缓存是如何使用的? 结合自己的公司的项目, 回答以下问题: 项目哪里用了缓存? 为什么要用? 用了可能会带来什么问题? 怎么解决这些问题? 项目的缓存架构是怎么样的? 如果面试官没有问这些问题, 我们也要主动和面试官聊聊. 2. 为什么要在项目中用缓存? (1) 高性能 如果不使用缓存, 每次请求都有较大的延迟, 比如600ms, 而如果每次请求都走缓存, 可能2ms就搞定了. (2) 高并发 在高并发场景下, 比如秒杀之类的促销活动, 如果所有请求都直接查询数据库, 会导致数据库宕机, 这个时候就需要缓存来分担数据库的压力. 3. 用了缓存之后可能会带来什么问题? 如何解决? (1) 缓存与数据库双写不一致 我们先了解下最经典的缓存和数据库的读写模式: 读的时候先读缓存, 再读数据库. 如果缓存中没有, 则从数据库中读取数据写入缓存. 修改数据的时候, 先删除对应的缓存, 再更新数据库. (或者先更新数据库, 再删除缓存) 从上面这个读写模式中我们可以发现, 在修改数据的时候, 只会更新数据库, 而不会同步更新缓存, 缓存是下次读的时候再更新. 这样做的原因是更新缓存的代价比较大, 比如对于一些比较复杂的业务场景, 缓存数据可能涉及到多张表的查询计算, 同时这个缓存数据还不一定会被频繁的访问, 所以综合考虑, 修改数据的时候直接删除缓存,