Redis 的使用总结_redis make 有什么用-程序员宅基地

技术标签: 工具  java技术  redis  

一、memcached与redis的区别?

  1.存储方式不同。memcached把数据全部存在内存之中,断电之后会挂掉,而redis虽然也用到了内存,但是会有部分数据存在硬盘中,保证数据持久性。

  2.数据支持类型不同。memcached对数据支持比较简单,而redis支持数据类型较丰富,如string、list、set、sorted set、hash。

  3.底层实现不同。一般调用系统函数,会消耗比较多的时间去请求,redis自己构建了vm,速度会更快。

二、redis数据的淘汰策略?

  1.volatile-lru:从已经设置过期时间的数据集中,挑选最近最少使用的数据淘汰。

  2.volatile-ttl:从已经设置过期时间的数据集中,挑选即将要过期的数据淘汰。

  3.volatile-random:从已经设置过期时间的数据集中,随机挑选数据淘汰。

  4.allkeys-lru:从所有的数据集中,挑选最近最少使用的数据淘汰。

  5.allkeys-random:从所有的数据集中,随机挑选数据淘汰。

  6。no-enviction:禁止淘汰数据。

三、为什么redis把所有数据都放到内存中?

  redis为了达到最快的读写速度,将数据都读到内存中,并通过异步的方式将数据写入磁盘。如果不将数据放在内存中,磁盘IO速度会严重影响redis的性能。

四、redis的并发竞争问题如何解决?

  首先redis为单进程单线程模式,采用队列模式将并发访问变为串行访问。redis本身时没有锁的概念的,redis对多个客户端连接并不存在竞争,但是在Jedis客户端对redis进行并发访问时会产生一系列问题,这些问题时由于客户端连接混乱造成的。有两种方案解决。

  1.在客户端,对连接进行池化,同时对客户端读写redis操作采用内部锁synchronized。

  2.在服务器角度,利用setnx实现锁。

五、redis过期键的删除策略?

  1.定时删除:在设置键的过期时间的同时,创建一个timer,让定时器在键的过期时间到达时,立即执行对键的删除操作。(主动删除)

    对内存友好,但是对cpu时间不友好,有较多过期键的而情况下,删除过期键会占用相当一部分cpu时间。

  2.惰性删除:放任过期键不管,但是每次从键空间中获取键时,都检查取到的键是否过去,如果过期就删除,如果没过期就返回该键。(被动删除)

    对cpu时间友好,程序只会在取出键的时候才会对键进行过期检查,这不会在删除其他无关过期键上花费任何cpu时间,但是如果一个键已经过期,而这个键又保留在数据库中,那么只要这个过期键不被删除,他所占用的内存就不会释放,对内存不友好。

  3.定期删除:每隔一段时间就对数据库进行一次检查,删除里面的过期键。(主动删除)

    采用对内存和cpu时间折中的方法,每个一段时间执行一次删除过期键操作,并通过限制操作执行的时长和频率来减少对cpu时间的影响。难点在于,选择一个好的策略来设置删除操作的时长和执行频率。

六、redis与一般db的同步过程?

  有两种方式。

  第一种,先去redis中判断数据是否存在,如果存在,则直接返回缓存好的数据,如果不存在,去db中读取数据,并把数据缓存一份到redis中。适用与数据里比较大,但是不经常更新的情况,如用户排行。

 

  第二种,先去redis中判断数据是否存在,如果存在,则直接更新对应数据(这一步会记录下更新的key,并把更新后的数据返回给页面,如果不存在,先去数据库中更新内容,然后把数据保存一份到redis中。再往后,后台会进行一系列操作,把redis中更新的key读取出来,找到数据库中对应的数据,并更新数据库。这种方式是把redis当作数据库使用,适合大数据的频繁变动。但是对redis的依赖很大,要做好挂掉之后的数据备份。

 

七、简述redis的哨兵模式

  哨兵是对redis进行实时的监控,主要有两个功能。

  1.监测主数据库和从数据库是否正常运行。2.当主数据库出现故障的时候,可以自动将一个从数据库转换为主数据库,实现自动切换。

八、redis的哨兵的监控机制是怎样的?

  哨兵监控也是有集群的,会有多个哨兵进行监控,当判断发生故障的哨兵达到一定数量的时候才进行修复。一个健壮的部署至少需要三个哨兵实例。

  1. 每个Sentinel以每秒钟一次的频率向它所知的Master,Slave以及其他 Sentinel 实例发送一个 PING 命令 

  2. 如果一个实例(instance)距离最后一次有效回复 PING 命令的时间超过 down-after-milliseconds 选项所指定的值, 则这个实例会被 Sentinel 标记为主观下线。

  3. 如果一个Master被标记为主观下线,则正在监视这个Master的所有 Sentinel 要以每秒一次的频率确认Master的确进入了主观下线状态。

  4. 当有足够数量的 Sentinel(大于等于配置文件指定的值)在指定的时间范围内确认Master的确进入了主观下线状态, 则Master会被标记为客观下线 

  5. 在一般情况下, 每个 Sentinel 会以每 10 秒一次的频率向它已知的所有Master,Slave发送 INFO 命令 

  6. 当Master被 Sentinel 标记为客观下线时,Sentinel 向下线的 Master 的所有 Slave 发送 INFO 命令的频率会从 10 秒一次改为每秒一次 

  7. 若没有足够数量的 Sentinel 同意 Master 已经下线, Master 的客观下线状态就会被移除。若 Master 重新向 Sentinel 的 PING 命令返回有效回复, Master 的主观下线状态就会被移除

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/LMAKE_nbsp/article/details/90614339

智能推荐

Qt5中setCursor编译报错的解决_qt setcursor无效-程序员宅基地

文章浏览阅读1.6k次。Qt5中setCursor编译报错的解决 在Qt开发的学习中,Qt社区的教程——第19篇 2D绘图(九)图形视图框架(上)地址:http://bbs.qter.org/forum.phpmod=viewthread&tid=125&extra=page%3D1%26filter%3Dauthor%26orderby%3Ddateline%26orderby%3Ddateline_qt setcursor无效

菜鸟教程html5常用标签,HTML5 Canvas | w3cschool菜鸟教程-程序员宅基地

文章浏览阅读228次。HTML5 Canvas 标签定义图形,比如图表和其他图像,您必须使用脚本来绘制图形。。在画布上(Canvas)画一个红色矩形,梯度矩形,彩色矩形,和一些彩色的文字。你的浏览器不支持 HTML5 的 元素.什么是 Canvas?HTML5 元素用于图形的绘制,通过脚本 (通常是JavaScript)来完成. 标签只是图形容器,您必须使用脚本来绘制图形。你可以通过多种方法使用Canva绘制路径,盒..._w3cschool菜鸟教程

【决策状态机FSM(finite state machine)梳理】_有限状态机决策-程序员宅基地

文章浏览阅读2k次。对Junior: The Stanford Entry in the Urban Challenge有限状态机的分析_有限状态机决策

变量的补充+变量的运算-程序员宅基地

文章浏览阅读561次,点赞8次,收藏24次。变量补充:扩展变量;变量的运算:test条件测试、中括号条件测试、双中括号条件测试、算术运算、字符串运算符、文件测试运算符

关于 Vue + echarts 实现双层饼(环)状图_erchart多级饼图-程序员宅基地

文章浏览阅读612次,点赞14次,收藏10次。这里 记录了一些本人在工作中用到的一些关于echarts的图表内容,就是关于部分不同的饼状图和环形图的介绍和使用,亲测有效,自己做个记录,也希望能够给您提供些许的帮助。_erchart多级饼图

jsmodern_jQuery视频播放插件jsModern(修改版)-程序员宅基地

文章浏览阅读248次。插件描述:一款简单的网页视频播放器插件jsModern,视频插件加了一个播放的按钮,视频播放时候就 隐藏。暂停就显示,使用方法文件里只需要 写引入 jsModern 的样式表和 js,和 jquery的包,我这个视频是 本地的,你可以更改自己的 视频地址。自己 加了一个播放的按钮,视频播放时候就 隐藏。暂停就显示,//播放视频$(".VideoBtn").click(function()..._jsmodern

随便推点

Hibernate各种查询方法_hibernatr 规定方法名查询-程序员宅基地

文章浏览阅读1w次,点赞8次,收藏45次。1 hibernate的查询方式2 对象导航查询3 hql查询 (1)查询所有 (2)条件查询 (3)排序查询 (4)分页查询 (5)投影查询 (6)聚集函数使用4 qbc查询 (1)查询所有 (2)条件查询 (3)排序查询 (4)分页查询 (5)统计查询5 hql多表查询 (1)mysql多表查询回顾 (2)hql多表查询6 hibernate的检索..._hibernatr 规定方法名查询

equals()方法详解_.equals-程序员宅基地

文章浏览阅读2.7w次,点赞32次,收藏147次。一、equals方法作用:equals()方法是用来判断其他的对象是否和该对象相等二、equals()方法在object类中定义:public boolean equals(Object obj) { return (this == obj); } 上边我们很明显看出是比较2个对象引用地址是否相同,但是我们平时在调用String、Integer等封装类型时的eq..._.equals

回归预测 | MATLAB实现PCR(主成分回归)多输入单输出_pcr matlab代码-程序员宅基地

文章浏览阅读3.1k次。回归预测 | MATLAB实现PCR(主成分回归)多输入单输出(PCA Regression)MATLAB实现数据降维的PCA(主成分分析)函数有pca和pcacov两个。pca函数可以直接利用原始数据进行主成分分析;pcacov函数针对原始数据的协方差矩阵进行主成分分析,本程序实现了两种分析方法的预测结果对比,可以直观看出不同处理方法的预测效果差异!预测结果一览主成分回归介绍当自变量存在高度共线性或一般回归分析所得到的回归系数不符合常理时,可以采用主成分回归法。通过变换将高度相关的变_pcr matlab代码

AI文章生成图片,秘密揭晓!快来看这些经验和技巧_豆包ai文生图生成风景-程序员宅基地

文章浏览阅读301次。近年来,随着人工智能技术的快速发展,ai文章生成图片成为了一种新型的创作方式。通过人工智能算法的支持,我们可以轻松地将文字转化为图像,为文章增添生动的视觉效果。在这篇文章中,我将分享一些关于ai文章生成图片的经验和技巧。1.选择合适的关键词在进行ai文章生成图片之前_豆包ai文生图生成风景

PHP如何将上传word文件转化为Html格式_php如何将word转换成html-程序员宅基地

文章浏览阅读281次。php word转化为html的实现方法:首先通过composer安装PHPOffice;然后查看vendor文件夹;最后通过“$xmlWriter ->save('./ceshi.htm');”方式将word文件转化为Html格式。_php如何将word转换成html

box-sizing-程序员宅基地

文章浏览阅读210次。盒子模型(外层的margin只是为了理解)盒子的宽度 = padding2 +border2+width盒子的高度 = padding2+border2+width这样我们每次在设置一个盒子的时候都需要去计算padding、border。并不直观,box-sizing 就解决了这个问题box-Sizing语法:box-sizing: content-box | border-box | ...

推荐文章

热门文章

相关标签