一、为什么使用redis
首先我认为使用redis主要是因为他的性能和并发能力优越,redis也具备做分布式锁的功能,但有其他组件也可以比如zookeeper可以替代,并不是非要使用redis,所以使用redis主要利用他的性能和并发能力。
回答两个问题:性能和并发
性能:
当我们需要从数据库中读取那些不经常变更的信息,可以把信息放到缓存中去读取,请求针对缓存的读取是十分迅速的。
并发:
当有很多的请求直接访问数据库时,会严重影响效率,我们可以让redis做一个缓冲操作,让请求先访问redis,而不是直接到数据库中。
二、项目使用redis的一些问题
1)数据库和缓存双写不一致的问题
2)缓存击穿
3)缓存雪崩
4)缓存的并发竞争问题
三、单线程的redis为什么这么快
1)单线程操作,避免了上下文切换的操作
2)纯内存操作
3)采用了非阻塞I/O多路复用机制
多路复用机制:
四、redis的数据类型,以及他的适用场景
五、redis的过期策略以及内存淘汰机制
六、redis和数据库双写不一致的问题
七、如何应对缓存穿透和缓存雪崩的问题
八、如何解决redis并发竞争key的问题