1 为什么使用Redis

分布式缓存
记录用户收藏数,评论数
缓存热点数据
搜索记录

2 Redis 数据结构

Redis数据结构解析

3 分布式锁

Redis分布式锁

4 布隆过滤器

向布隆过滤器中添加 key 时,会使用多个 hash 函数对 key 进行 hash 算得一个整数索引值然后对位数组长度进行取模运算得到一个位置,每个 hash 函数都会算得一个不同的位置。再把位数组的这几个位置都置为 1 就完成了 add 操作;
向布隆过滤器询问 key 是否存在时,跟 add 一样,也会把 hash 的几个位置都算出来,看看位数组中这几个位置是否都为 1,只要有一个位为 0,那么说明布隆过滤器中这个 key 不存在。如果都是 1,这并不能说明这个 key 就一定存在,只是极有可能存在,因为这些位被置为 1 可能是因为其它的 key 存在所致;

5 渐进式rehash

Redis Dict 中定义了两张哈希表,是为了后续字典的扩展作Rehash之用:先查旧hash表,没有数据再查新hash表

6 持久化

Redis持久化

7 管道

pipeline 通过减少客户端与 redis 的通信次数来实现降低往返延时时间,而且 Pipeline 实现的原理是队列,而队列的原理是时先进先出,这样就保证数据的顺序性。 Pipeline 的默认的同步的个数为53个,也就是说 arges 中累加到53条数据时会把数据提交。其过程如下图所示:client 可以将三个命令放到一个 tcp 报文一起发送,server 则可以将三条命令的处理结果放到一个 tcp 报文返回;

8 集群

Redis高可用

9 为什么redis这么快

纯内存操作
核心是基于非阻塞的IO多路复用机制
单线程反而避免了多线程的频繁上下文切换问题

redis基于reactor模式开发了网络事件处理器, 是单线程的, 采用IO多路复用机制同时监听多个socket,根据socket上的事件来选择对应的事件处理器来处理这个事件;

IO多路复用程序可以同时监听AE_REABLE和AE_WRITABLE两种事件,要是一个socket同时产生了AE_READABLE和AE_WRITABLE两种事件,那么文件事件分派器优先处理AE_REABLE事件,然后才是AE_WRITABLE事件;

10 内存淘汰策略

redis 过期策略 :
定期删除:redis 是每隔 100ms 随机抽取一些 key 来检查和删除的;
惰性删除:获取key 的时候,如果此时 key 已经过期,就删除,不会返回任何东西。

淘汰机制:
1)noeviction:当内存不足以容纳新写入数据时,新写入操作会报错,这个一般没人用吧,实在是太恶心了
2)allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的key(这个是最常用的)
3)allkeys-random:当内存不足以容纳新写入数据时,在键空间中,随机移除某个key,这个一般没人用吧,为啥要随机,肯定是把最近最少使用的key给干掉啊
4)volatile-lru:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,移除最近最少使用的key(这个一般不太合适)
5)volatile-random:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,随机移除某个key
6)volatile-ttl:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,有更早过期时间的key优先移除

lru ,lfu ,随机,ttl

Redis 面试知识点相关推荐

  1. Redis面试知识点

    Redis面试知识点 1.Redis概述 在我们日常的Java Web开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题,可是一旦涉 ...

  2. redis面试知识点和内存算法了解

    1 关于Redis 配置说明 1.1 关于Redis持久化的说明 redis默认条件下支持数据的持久化操作. 当redis中有数据时会定期将数据保存到磁盘中.当Redis服务器重启时 会根据配置文件读 ...

  3. Redis面试知识点,必问10条

    一.Redis只有单线程吗? Redis 是单线程的,主要是指 Redis 的网络 I/O 线程,以及键值的 SET 和 GET 等读写操作都是由一个线程来完成的.但 Redis 的持久化.集群同步等 ...

  4. Java开发基础面试知识点

    目录 Java基础 数据类型 ==和equals的区别 hashcode()和equals()方法 String.StringBuilder.StringBuffer区别 访问权限修饰符 final修 ...

  5. 【决战西二旗】|Redis面试热点之底层实现篇

    来自:后端技术指南针 0.前言 最近一周没有技术文章产出,主要是Q4马上结束各种业务都在冲量,笔者一直都在疯狂工作甚至还有些焦虑到偶尔失眠,由于没有成块的时间研究新东西,所以就把之前看过的东西抽时间总 ...

  6. Java程序员必备!Redis面试复习大纲在手面试不慌

    咱先来聊聊Redis 像Redis的基础入门,掌握下图这几个列出来的知识点足以了. 进阶的话,就得下点功夫了,事务.主从复制.哨兵.集群等等之类的搞不明白你就上不去呀. 再看美团亿级流量Redis实战 ...

  7. 前端面试知识点目录整理

    前端面试知识点目录整理 基本功考察 1.关于Html 1.html语义化标签的理解.结构化的理解:能否写出简洁的html结构:SEO优化. 2.h5中新增的属性,如自定义属性data.类名classN ...

  8. Redis面试复习大纲在手面试不慌,内含福利

    前言 这几年在Java工程师招聘时,会看到很多人的简历都写着使用了Spring Cloud做微服务实现,使用Docker做自动化部署,并且也会把这些做为自己的亮点.而比较有趣的这其中以小公司出来的人为 ...

  9. 2019年秋招 Java 面试知识点梳理(高频问题)

    Java 面试知识点梳理 基础一 JVM-内存区域分配 HotSpot 对象创建 JVM-类加载机制 JVM-内存分配(堆上的内存分配) JVM-GC回收机制 JVM-垃圾收集器 JVM指令重排序 重 ...

最新文章

  1. 如何将文件地址转为url_Node.js 源码解析 util.promisify 如何将 Callback 转为 Promise
  2. 平面点集的最小包围圆 hdu 3932
  3. @程序员,当你准备选择“这条路”,那么恭喜你,你的钱包可能要鼓了!
  4. 三星Galaxy Tab S8系列国行版曝光:对标iPad Pro的旗舰平板
  5. rpmbuild - 构建 RPM 打包
  6. java 同步块原理_Java同步代码块和同步方法原理与应用案例详解
  7. (一)mybatis之JDBC介绍
  8. IPv6的地址表达形式
  9. 2022年环境影响评价工程师考试评价技术方法练习题及答案
  10. 媒体:28省份已开展不动产登记机构整合工作
  11. 广和通率先启动基于联发科技 T830 5G平台的5G模组开发,加速全球运营商5G FWA部署
  12. 小程序获取用户openid,php获取微信小程序openid的方法
  13. c语言大作业矩阵运算,用C语言实现矩阵运算
  14. 新兴职业背后的认知逻辑
  15. 【甘肃银行:进一步加大在区块链等领域的布局】GBCAX
  16. iic的SDA引脚偶尔有毛刺(尖峰)是怎么回事。
  17. Matlab学习3-图像处理之镜像、错切、透视
  18. C++函数指针与成员函数指针
  19. 请求与通配符 mime 映射相匹配。请求映射到静态文件处理程序。如果有不同的前提条件,请求将映射到另一个处理程序。
  20. 痞子衡嵌入式:ARM Cortex-M文件那些事(4)- 可重定向文件(.o/.a)

热门文章

  1. 利用feko仿真的RCS成像结果
  2. 利用python批量读取ICESat-2ATL13数据
  3. 2022年河南省高等职业教育技能大赛软件测试赛项竞赛方案
  4. EVE-NG--华为防火墙USG6000v 内外网打通,并均可通过公网IP访问FTP服务器
  5. 配置zbar识别二维码(转载)
  6. 树莓派使用mini串口与外部进行通信
  7. C#计算两点之间的角度问题
  8. 手机怎样显示0的电量?
  9. 王者荣耀怎么做到经济领先呢
  10. 美团点评西安站凉面筋