• Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  • Redis支持数据的备份,即master-slave模式的数据备份。
  • 原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作合并后的原子性执行。(事务)
  1. 缓存和数据库双写一致性问题
  • 一致性问题是分布式常见问题,还可以再分为最终一致性和强一致性。
    • 数据库和缓存双写,就必然会存在不一致的问题。答这个问题,先明白一个前提。
    • 就是如果对数据有强一致性要求,不能放缓存。我们所做的一切,只能保证最终一致性。
    • 另外,我们所做的方案其实从根本上来说,只能说降低不一致发生的概率,无法完全避免。
    • 因此,有强一致性要求的数据,不能放缓存。
  • 回答:《分布式之数据库和缓存双写一致性方案解析》给出了详细的分析,在这里简单的说一说。
    • 首先,采取正确更新策略,
    • 先更新数据库,再删缓存。 其次,因为可能存在删除缓存失败的问题,提供一个补偿措施即可,例如利用消息队列。
  1. 缓存雪崩问题、缓存穿透
  • 这两个问题,一般中小型传统软件企业,很难碰到这个问题。如果有大并发的项目,日流量有KW级上。这两个问题一定要 深刻考虑。
  • 缓存穿透,即黑客故意去请求缓存中不存在的数据,导致所有的请求都怼到数据库上,从而数据库连接异常。 (四)缓存的并发竞争问题