• Redis大厂面试汇总


    缓存雪崩、缓存穿透、缓存击穿

    答题思路:

    • 三者的概念,发生场景、解决方案
    • 三者的区别和影响

    涉及知识点:Redis第七章:缓存问题—缓存穿透、缓存雪崩、缓存击穿
    穿透:不存在的key
    雪崩:大量的key失效
    击穿:一个key或一些key 热点key

    大Key,热点Key的处理

    Hot Key

    答题思路:

    • hot key的概念,场景,问题

    • hot key的发现

    • hot key的处理

    涉及知识点:Redis第七章:缓存问题—hot key

    Big Key

    答题思路:

    • big key的概念、场景,影响
      String > 10k list大于5000个

    • big key的发现

    • big key的处理

    涉及知识点:缓存问题—big key

    数据库一致,缓存失效,数据并发竞争

    数据库一致

    答题思路:

    • Catch Aside Pattern

    • 数据源不一致

    • 场景的适用性(互联网)

    • 保证最终一致,一致的时间处理

    涉及知识点:
    Cache Aside Pattern
    数据不一致

    缓存失效

    答题思路:
    缓存失效带来的问题:缓存穿透、缓存雪崩、缓存击穿(高并发)
    会让数据库压力过大而宕机
    redis的缓存过期策略: LRU
    Redis设置的expiretime TTL
    缓存失效的处理:
    Redis做DB时,不能失效 保证数据的完整性,数据一致问题,定时任务,在DB变化后,更新缓存
    可以失效但不穿DB,失效后读取本地缓存或服务熔断
    异步更新DB,数据时时同步
    涉及知识点:
    缓存穿透、缓存雪崩、缓存击穿
    缓存过期和淘汰策略
    缓存更新策略

    数据并发竞争

    答题思路:

    • 数据并发竞争的概念、场景

    • 数据并发竞争的影响

    • 解决方案:
      将并发串行化:分布式锁+时间戳、利用队列
      使用CAS:秒杀

    涉及知识点:
    数据并发竞争
    乐观锁

    热点数据和冷数据是什么

    答题思路:
    热数据:hot key 位于Redis中 命中率尽量高
    冷数据:不经常访问的数据 位于DB中
    冷热的交换:maxmemory+allkeys LRU
    交换比例:热20万、冷200万
    Redis作为DB时,冷数据不能驱逐,保证数据的完整性
    涉及知识点:
    hot key
    缓存过期和淘汰策略

    单线程的redis为什么这么快

    答题思路:
    redis在内存中操作,持久化只是数据的备份,正常情况下内存和硬盘不会频繁swap
    多机主从,集群数据扩展
    maxmemory的设置+淘汰策略
    数据结构简单,有压缩处理,是专门设计的
    单线程没有锁,没有多线程的切换和调度,不会死锁,没有性能消耗
    使用I/O多路复用模型,非阻塞IO;
    构建了多种通信模式,进一步提升性能
    进行持久化的时候会以子进程的方式执行,主进程不阻塞
    img

    涉及知识点:
    底层数据结构
    缓存过期和淘汰策略
    通信协议
    事件处理机制
    RDB和AOF
    主从、集群

    redis的过期策略以及内存淘汰机制

    答题思路:

    • 为什么要过期

    • 什么情况下不能过期

    • 如何设置过期

    • expires 原理

    • 如何选择缓存淘汰策略

    涉及知识点:
    缓存过期和淘汰策略

    Redis 为什么是单线程的,优点

    答题思路:

    • Redis采用单线程多进程集群方案

    • Redis是基于内存的操作,CPU不是Redis的瓶颈

    • 瓶颈最有可能是机器内存的大小或者网络带宽

    • 单线程的设计是最简单的

    • 但是对多核CPU利用率不够,所以Redis6采用多线程。

    单线程优点:

    • 代码更清晰,处理逻辑更简单 不用去考虑各种锁的问题,

    • 不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗

    • 不存在多进程或者多线程导致的切换而消耗CPU

    涉及知识点:
    缓存过期和淘汰策略
    通信协议
    事件处理机制

    如何解决redis的并发竞争key问题

    Rediskey的设计,尽量不竞争
    必须竞争:秒杀、分布式锁
    同数据并发竞争

    Redis分布式锁问题

    答题思路:

    • 分布式锁的概念,应用场景

    • Redis的实现方式

    • 分布式锁的本质分析

    • redis、zookeeper、etcd三者的对比和应用场景

    • redisson的使用

    涉及知识点:分布式锁

    有没有尝试进行多机redis 的部署?如何保证数据一致的?

    答题思路:

    • redis多机部署方案:Redis主从+哨兵、codis集群、RedisCluster

    • 多机: 高可用、高扩展、高性能

    • 三者的区别,适用场景

    • 数据一致性指的是主从的数据一致性

    • Redis是AP模型,主从同步有时延。所以不能保证主从数据的时时一致性,只能保证数据最终一致

    • 保证数据一致性方案:
      1、忽略
      如果业务能够允许短时间不同步就忽略,比如:搜索,消息,帖子,职位
      2、强制读主库,从库只做备份使用

    • 使用一个高可用主库提供数据库服务

    • 读和写都落到主库上

    • 采用缓存来提升系统读性能

    3、选择性读主
    写主库时将哪个库,哪个表,哪个主键三个信息拼装一个key设置到cache里
    读时先在cache中查找:
    cache里有这个key,说明1s内刚发生过写请求,数据库主从同步可能还没有完成,此时就应该
    去主库查询
    cache里没有这个key,说明最近没有发生过写请求,此时就可以去从库查询

    涉及知识点:
    主从复制、哨兵模式、proxy端分区、官方cluster分区

    别废话,拿你代码给我看。
  • 相关阅读:
    条件概率和链式法则 conditional probability & chain rule
    如何训练一个神经网络?
    高斯贝叶斯分类器
    LDA
    机器学习中的数学-线性判别分析(LDA)
    理解矩阵
    pca数学原理(转)
    SVM入门
    Top 10 Machine Learning Algorithms For Beginners
    vfp
  • 原文地址:https://www.cnblogs.com/lvxueyang/p/15013745.html
Copyright © 2020-2023  润新知