分析redis原理及实现


下面由redis教程栏目给大家介绍分析redis原理及实现,希望对需要的朋友有所帮助!

1 什么是redis

redis是nosql(也是个巨大的map) 单线程,但是可处理1秒10w的并发(数据都在内存中)
使用j*a对redis进行操作类似jdbc接口标准对mysql,有各类实现他的实现类,我们常用的是druid
其中对redis,我们通常用Jedis(也为我们提供了连接池JedisPool)

在redis中,key就是byte[](string)

redis的数据结构(value):

String,list,set,orderset,hash

2 redis的使用

先安装好redis,然后运行,在pom文件中引入依赖,在要使用redis缓存的类的mapper.xml文件配置redis的全限定名。引入redis的redis.properties文件(如果要更改配置就可以使用)
应用场景:

String :
1存储json类型对象,2计数器,3优酷视频点赞等
list(双向链表)
1可以使用redis的list模拟队列,堆,栈

2朋友圈点赞(一条朋友圈内容语句,若干点赞语句)

规定:朋友圈内容的格式:

1,内容: user:x:post:x content来存储;

2,点赞: post:x:good list来存储;(把相应头像取出来显示)

hash(hashmap)

1保存对象

2分组

3 string与hash的数据差别

在网路传输时候,必须要进行进行序列化,才可以进行网路传输,那么在使用string类型的类型的时候需要进行相关序列化,hash也是要进行相关的系列化,所以会存在很多序列化,在存储的时候hash是可以存储的更加丰富,但是在反序列化的时候,string的反序列化相对较低,而hash的序列化和返序列化是相对hash类更加复杂,所以看业务场景,如果是数据经常修改的那种,为了性能可以使用string,如果是数据不是经常改的那种就可以使用hash,由于hash,存储数据时比较丰富,可以存储多种数据类型

4 redis的持久化方式:

能,将内存中的数据异步写入硬盘中,两种方式:RDB(默认)和AOF

RDB持久化原理:通过bgs*e命令触发,然后父进程执行fork操作创建子进程,子进程创建RDB文件,根据父进程内存生成临时快照文件,完成后对原有文件进行原子替换(定时一次性将所有数据进行快照生成一份副本存储在硬盘中)

优点:是一个紧凑压缩的二进制文件,Redis加载RDB恢复数据远远快于AOF的方式。

缺点:由于每次生成RDB开销较大,非实时持久化,

AOF持久化原理:开启后,Redis每执行一个修改数据的命令,都会把这个命令添加到AOF文件中。

优点:实时持久化。

缺点:所以AOF文件体积逐渐变大,需要定期执行重写操作来降低文件体积,加载慢

5 redis单线程为什么这么快

  redis是单线程的,但是为什么还是这么快呢,

  原因1: 单线程,避免线程之间的竞争

SUZI电子商城系统 SUZI电子商城系统

这是一套电子商城购物系统的模版,功能类似于8848网站,可以实现商品的两级分类管理,管理功能包括用户注册,商品大类小类添加,商品管理,管理员管理及用户定单管理等,是一套完整的购物系统,可随意修改成不同的模式

SUZI电子商城系统 2 查看详情 SUZI电子商城系统

  原因2 :是内存中的,使用内存的,可以减少磁盘的io

  原因3:多路复用模型,用了缓冲区的概念,selector模型来进行的

6 redis主挂了怎么操作

  redis提供了哨兵模式,当主挂了,可以选举其他的进行代替,哨兵模式的实现原理,就是三个定时任务监控,

  6.1 每隔10s,每个S节点(哨兵节点)会向主节点和从节点发送info命令获取最新的拓扑结构

  6.2 每隔2s,每个S节点会向某频道上发送该S节点对于主节点的判断以及当前Sl节点的信息,

    同时每个Sentinel节点也会订阅该频道,来了解其他S节点以及它们对主节点的判断(做客观下线依据)

  6.3 每隔1s,每个S节点会向主节点、从节点、其余S节点发送一条ping命令做一次心跳检测(心跳检测机制),来确认这些节点当前是否可达

  当三次心跳检测之后,就会进行投票,当超过半数以上的时候就会将该节点当做主

7 redis集群

  redis集群在3.0以后提供了ruby脚本进行搭建,引入了糙的概念,

  Redis集群内节点通过ping/pong消息实现节点通信,消息不但可以传播节点槽信息,还可以传播其他状态如:主从状态、节点故障等。因此故障发现也是通过消息传播机制实现的,主要环节包括:主观下线(pfail)和客观下线(fail)
  主客观下线:

  主观下线:集群中每个节点都会定期向其他节点发送ping消息,接收节点回复pong消息作为响应。如果通信一直失败,则发送节点会把接收节点标记为主观下线(pfail)状态。

  客观下线:超过半数,对该主节点做客观下线

  主节点选举出某一主节点作为领导者,来进行故障转移。

  故障转移(选举从节点作为新主节点)

8 内存淘汰策略

Redis的内存淘汰策略是指在Redis的用于缓存的内存不足时,怎么处理需要新写入且需要申请额外空间的数据。

noeviction:当内存不足以容纳新写入数据时,新写入操作会报错。

allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的key。

allkeys-random:当内存不足以容纳新写入数据时,在键空间中,随机移除某个key。

volatile-lru:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,移除最近最少使用的key。

volatile-random:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,随机移除某个key。

volatile-ttl:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,有更早过期时间的key优先移除。

9 缓存击穿的解决方案:

  原因:就是别人请求数据的时候,很多数据在缓存中无法查询到,直接进入数据查询,

  解决方法,对相关数据进行查询的数据只查询缓存,如果是一些特殊的可以进行数据库查询,

  也可以采用布隆过滤器进行查询

10缓存雪崩的解决方案:

  缓存雪崩的原因:一次性加入缓存的数据过多,导致内存过高,从而影响内存的使用导致服务宕机

  解决方法:

  1 redis集群,通过集群方式将数据放置

  2 后端服务降级和限流:当一个接口请求次数过多,那么就会添加过多数据,可以对服务进行限流,限制访问的数量,这样就可以减少问题的出现

以上就是分析redis原理及实现的详细内容,更多请关注其它相关文章!


# 盘中  # 潍坊网站建设单位  # 重庆seo关键词排名  # 锦州推广网站建设企业  # 淘宝营销宣传推广方式  # 安溪人工营销推广  # 泰安网站建设优化  # 网络优化seo考核  # soho公寓营销推广  # 西安营销推广找哪家  # 长治网站推广营销公司  # redis  # 挂了  # 会把  # 可以使用  # 会向  # 每隔  # 单线程  # 就会  # 移除  # 序列化 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: 韩剧圈正版官网入口_韩剧圈官方指定登录  小米手机屏幕失灵乱跳怎么办 屏幕触控问题自检与临时解决方法【应急】  Win10怎么设置快速启动 Win10开启快速启动设置方法  毒蘑菇VOLUMESHADER_BM官网首页登录入口 毒蘑菇VOLUMESHADER_BM官网首页登录入口说明  《三角洲行动》战斗步枪与机枪类改装代码分享  泰拉瑞亚网页版在线登录入口 泰拉瑞亚官方正版入口  Win10共享文件夹设置方法 Win10局域网文件共享全攻略【教程】  《东方财富》条件单关闭方法  Python高效统计字典嵌套列表值在目标列表中的出现次数  海棠阅读登录教程_详细讲解海棠登录操作  苹果11如何更换iCloud账号_苹果11账号切换的具体步骤  百度网盘网页入口链接分享 百度网盘官网入口网页登录  济南公交卡手机充值指南  《豆瓣》私信用户方法  J*a列表元素格式化输出教程  PySimpleGUI中实现键盘按键与按钮事件绑定教程  优化CSS动画与J*aScript定时器协同:构建稳定Toast提示  rabbitmq 持久化有什么缺点?  Lar*el Eloquent中通过Join查询关联数据表:解决多行子查询问题  悟空浏览器网页版在线工具 悟空浏览器网页版在线平台入口  C++如何使用CMake构建项目_C++ CMakeLists.txt编写入门教程  圆通快递包裹轨迹查询 圆通速递快件实时位置跟踪  画质怪兽120帧安卓和平精英免费版  J*aScript模拟悬停与点击:自动化网页动态元素交互指南  谷歌邮箱怎么换绑定邮箱Gmail安全备份邮箱修改方法  《饿了么》拼好饭点外卖教程2025  聚水潭ERP后台管理系统登录 聚水潭ERP官方登录通道  漫蛙漫画直连入口 _ manwa官方备用入口实时检测  谷歌浏览器怎么把网页翻译成中文_Chrome网页翻译功能使用方法  《下一站江湖2》心法融合技巧  服装短视频如何起号推广?服装短视频起号推广有什么要求?  qq音乐官方网站入口_qq音乐在线听歌网页版链接  微信客户端如何找回密码_微信客户端忘记密码找回方法  WPS文字如何进行简繁转换  TikTok私信无法发送表情怎么办 TikTok消息表情发送修复方法  《随手记》启用语音备注方法  NumPy 高性能技巧:基于多列条件查找最近邻行索引的向量化实现  《雷电模拟器》截图方法介绍  《波斯王子:失落的王冠》剑术大师打法攻略  Pandas中基于动态偏移量实现DataFrame列值位移的策略  《浙里办》电子发票开具方法  可米酷漫画在线阅读入口_ 可米酷漫画官网直达链接  《崩坏:星穹铁道》3.6版本异相仲裁打法及配队推荐  BunnyStream TUS视频上传指南:解决401认证错误与参数配置  263企业邮箱如何设置邮件转发功能  Win11怎么录屏_Windows 11自带Xbox Game Bar录制视频  Animex动漫社社登录官网 Animex动漫社资源社入口直达  c++中的const关键字用法大全_c++ const正确使用指南  composer licenses 命令:如何检查项目依赖的许可证?  电脑的“恢复环境(WinRE)”找不到怎么办_Windows系统恢复环境重建【高级修复】 

 2020-10-22

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.