摘要:
Redis是单线程的吗 工作线程是单线程的,但是后台还有和IO有关、aof刷盘,释放内存,处理关闭文件的线程 为什么Redis采用单线程还是很快 Redis的数据存储在内存中 没有多线程切换导致的性能损耗 IO多路复用机制,可以一个线程处理多个IO Redis 6.0 之前为什么使用单线程? 因为性 阅读全文
摘要:
Redis五种数据类型 String 数据结构:SDS 应用类型:缓存数据,计数,互斥锁 List 数据结构:压缩列表或者双向链表 应用类型:缓存链表或者作为队列 Hash 数据结构:压缩列表或者哈希表 应用类型:缓存对象 Set 数据结构:整型集合或者哈希表 应用类型:缓存集合,例如好友关系 Zs 阅读全文
摘要:
混合持久化相关问题 为什么会有混合持久化? 为了解决aof和rdb的缺点,混合模式结合了aof和rdb的优点 aof的优点是生成性能高,缺点是恢复时间慢,rdb的优点是恢复时间快,缺点是快照生成的时机不好把握,频率高影响性能,频率低会丢失很多数据。 为了解决aof和rdb的缺点,就有了混合模式。 混 阅读全文
摘要:
内存淘汰机制,LFU和LRU的比较和优缺点以及实现方式 Redis 内存满了,会发生什么? 如果redis的内存达到了阈值,会发生内存淘汰,阈值通过配置文件的maxmemory设置 Redis 内存淘汰策略有哪些? 大概分为三类 报错 根据有过期时间淘汰 volatile-random,随机淘汰有过 阅读全文
摘要:
如何避免缓存雪崩、缓存击穿、缓存穿透? 缓存雪崩是指很多key同一时间过期,可以让缓存不过期或者将失效时间打散 缓存击穿是指热点key过期,可以让缓存不过期或者添加互斥锁,这样只有一个线程访问数据库 缓存穿透是指访问在数据库和缓存都不存在的值,可以通过校验参数来限制非法请求,使用布隆过滤器,缓存空值 阅读全文
摘要:
如何设计一个缓存策略,可以动态缓存热点数据呢? 热点数据动态缓存的策略总体思路:通过数据最新访问时间来做排名,并过滤掉不常访问的数据,只留下经常访问的数据。 以电商平台场景中的例子,现在要求只缓存用户经常访问的 Top 1000 的商品。具体细节如下: 先通过缓存系统做一个排序队列(比如存放 100 阅读全文
摘要:
说说常见的缓存更新策略? 有cache aside,read/write through ,write back三种 cache aside 对于写操作,先更新数据库,后删除缓存,对于读操作,先访问缓存,有返回,没有查询数据库再保存到缓存中。 适用于读多写少的场景,不适合写多的场景,因为写多会频繁删 阅读全文