1 关于Redis 配置说明

1.1 关于Redis持久化的说明

redis默认条件下支持数据的持久化操作. 当redis中有数据时会定期将数据保存到磁盘中.当Redis服务器重启时 会根据配置文件读取指定的持久化文件.实现内存数据的恢复.

1.2 持久化方式介绍

1.2.1 RDB模式

特点: 1.RDB模式是redis的默认的持久化策略. 2.RDB模式记录的是Redis 内存数据的快照. 最新的快照会覆盖之前的内容 所有RDB持久化文件占用空间更小 持久化的效率更高. 3.RDB模式由于是定期持久化 所以可能导致数据的丢失.

命令:

  1. save 要求立即马上持久化 同步的操作 其他的redis操作会陷入阻塞的状态.

  2. bgsave 开启后台运行 异步的操作 由于是异步操作,所以无法保证rdb文件一定是最新的需要等待.

配置: 1.持久化文件名称:

2.持久化文件位置 dir ./ 相对路径的写法 dir /usr/local/src/redis 绝对路径写法

3.RDB模式持久化策略

1.2.2 AOF模式

特点: 1.AOF模式默认条件下是关闭的,需要用户手动的开启 在这里插入图片描述 2. AOF模式是异步的操作 记录的是用户的操作的过程 可以防止用户的数据丢失 3. 由于AOF模式记录的是程序的运行状态 所以持久化文件相对较大,恢复数据的时间长.需要人为的优化持久化文件

配置:

1.2.3 关于持久化操作的总结

1.如果不允许数据丢失 使用AOF方式 2.如果追求效率 运行少量数据丢失 采用RDB模式 3.如果既要保证效率 又要保证数据 则应该配置redis的集群 主机使用RDB 从机使用AOF

2 关于Redis内存策略

2.1.1 关于内存策略的说明

说明:Redis数据的存储都在内存中.如果一直向内存中存储数据 必然会导致内存数据的溢出. 解决方式:

  1. 尽可能为保存在redis中的数据添加超时时间.

  2. 利用算法优化旧的数据.

2.1.2 LRU算法

特点: 最好用的内存优化算法. LRU是Least Recently Used的缩写,即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间 t,当需淘汰一个页面时,选择现有页面中其 t 值最大的,即最近最少使用的页面予以淘汰。 维度: 时间 T

2.1.3 LFU算法

LFU(least frequently used (LFU) page-replacement algorithm)。即最不经常使用页置换算法,要求在页置换时置换引用计数最小的页,因为经常使用的页应该有一个较大的引用次数。但是有些页在开始时使用次数很多,但以后就不再使用,这类页将会长时间留在内存中,因此可以将引用计数寄存器定时右移一位,形成指数衰减的平均使用次数。 维度: 使用次数

2.1.4 RANDOM算法

随机删除数据

2.1.5 TTL算法

把设定了超时时间的数据将要移除的提前删除的算法.

2.1.6 Redis内存数据优化

volatile-lru 设定了超时时间的数据采用lru算法 2.allkeys-lru 所有的数据采用LRU算法 3.volatile-lfu 设定了超时时间的数据采用lfu算法删除 4.allkeys-lfu 所有数据采用lfu算法删除 5.volatile-random 设定超时时间的数据采用随机算法 6.allkeys-random 所有数据的随机算法 7.volatile-ttl 设定超时时间的数据的TTL算法 8.noeviction 如果内存溢出了 则报错返回. 不做任何操作. 默认值

3 关于Redis 缓存面试题

问题描述: 由于海量的用户的请求 如果这时redis服务器出现问题 则可能导致整个系统崩溃. 运行速度:

  1. tomcat服务器 150-250 之间 JVM调优 1000/秒

  2. NGINX 3-5万/秒

  3. REDIS 读 11.2万/秒 写 8.6万/秒 平均 10万/秒

3.1 缓存穿透

问题描述: 由于用户高并发环境下访问 数据库中不存在的数据时 ,容易导致缓存穿透. 如何解决: 设定IP限流的操作 nginx中 或者微软服务机制 API网关实现.

3.2 缓存击穿

问题描述: 由于用户高并发环境下, 由于某个数据之前存在于内存中,但是由于特殊原因(数据超时/数据意外删除)导致redis缓存失效. 而使大量的用户的请求直接访问数据库. 俗语: 趁他病 要他命 如何解决: 1.设定超时时间时 不要设定相同的时间. 2.设定多级缓存

缓存雪崩

说明: 由于高并发条件下 有大量的数据失效.导致redis的命中率太低.而使得用户直接访问数据库(服务器)导致崩溃,称之为缓存雪崩. 解决方案: 1.不要设定相同的超时时间 随机数 2.设定多级缓存. 3.提高redis缓存的命中率 调整redis内存优化策略 采用LRU等算法.

更多精彩内容欢迎关注公众号【 编程简单学丶】 回复Java 还有粉丝福利哦~  

redis面试知识点和内存算法了解相关推荐

  1. Redis面试知识点

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

  2. 互联网面试知识点总结(算法,后端)

    大厂面试知识点总结 文章目录 大厂面试知识点总结 操作系统&计算机组成原理 操作系统的一般功能 操作系统结构 并发与并行 concurrency和parallelism 进程,线程和协程 进程 ...

  3. Redis 面试知识点

    1 为什么使用Redis 分布式缓存 记录用户收藏数,评论数 缓存热点数据 搜索记录 2 Redis 数据结构 Redis数据结构解析 3 分布式锁 Redis分布式锁 4 布隆过滤器 向布隆过滤器中 ...

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

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

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

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

  6. @cacheable 设置过期时间_缓存面试三连击——聊聊Redis过期策略?内存淘汰机制?再手写一个LRU 吧!...

    大家好,今天我和大家想聊一聊有关redis的过期策略的话题. 听到这里你也许会觉得:"我去,我只是个日常搬砖的,这种偏底层的知识点,我需要care吗?" 话虽如此·,但是兄die, ...

  7. 备战面试日记(6.1) - (缓存相关.Redis全知识点)

    本人本科毕业,21届毕业生,一年工作经验,简历专业技能如下,现根据简历,并根据所学知识复习准备面试. 记录日期:2022.1.15 大部分知识点只做大致介绍,具体内容根据推荐博文链接进行详细复习. 文 ...

  8. Redis面试 - 内存淘汰机制

    Redis面试 - 内存淘汰机制 面试题 redis 的过期策略都有哪些?内存淘汰机制都有哪些?手写一下 LRU 代码实现? 面试官心理分析 如果你连这个问题都不知道,上来就懵了,回答不出来,那线上你 ...

  9. 机器学习算法工程师面试知识点汇总

    机器学习算法工程师面试知识点汇总 机器学习 梯度下降 k-means 1 × 1卷积核 模型 SVM Bagging & Boosting 随机森林 激活函数 Sigmod tanh ReLU ...

最新文章

  1. Swift实现Touch ID验证
  2. IIS环境下如何批量添加、修改、删除绑定的域名
  3. spring-cloud-config 搭建-入门级(一)
  4. CH5E02 花店橱窗【线性DP】
  5. 【图解机器学习】人人都能懂的算法原理
  6. tomcat端口被占用-----windows下如何查询某个端口被哪个进程占用以及如何杀死进程
  7. python中关于turtle库的学习笔记
  8. 关于SAP UI5数据绑定我的一些原创内容
  9. 关键词分词工具_快图制作工具 | 如何制作词云图?
  10. android 屏幕关闭 eofexception,android EOFException异常解决办法 (SharedPreferences保存对象)...
  11. python3环境运行python2代码_使用Anaconda实现Python2和Python3共存及相互转换
  12. 安装库_python的库的安装
  13. Ubuntu镜像源下载
  14. Java使用ffmpeg和mencoder实现视频转码
  15. R实例:构建量化分析系统(一)— 获取交易数据
  16. matlab中的for应用,Matlab中matlab中for_循环的原理和应用
  17. linux系统bcast,Linux系统下取IP地址的几种方法
  18. 3D深度传感ToF技术的基本原理解析
  19. 【异常处理】解决Windows下access denied for user ‘root‘@‘localhost‘(using password:YES)的mysql启动问题
  20. 看懂oracle trc文件,oracle 的 debug 工具 和 分析 trc 文件工具 ass.awk

热门文章

  1. python和R文件IO操作对比及dataframe创建方式对比:read_csv、to_csv、write.csv、 data.frame、pd.DataFrame
  2. python将ElasticSearch索引数据读入pandas dataframe实战
  3. 固态硬盘上安装centos_固态硬盘使用f2fs作为根分区安装linux
  4. php tr 用法,Linux_Linux系统中tr命令删除和替换文本字符的基本用法,通过使用 tr,您可以非常容易 - phpStudy...
  5. KnifeCMSV1.0Beta测试版发布
  6. Error Correction and DeNovo Genome Assembly for the MinION Sequencing Reads mixing Illumina Short Re
  7. python 打包wheel文件,自己的SDK包
  8. python 自带虚拟环境
  9. Flask+gunicorn部署HTTP服务
  10. 半环(semiring)的数学概念