iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >分析redis原理及实现方法
  • 570
分享到

分析redis原理及实现方法

2024-04-02 19:04:59 570人浏览 安东尼
摘要

小编给大家分享一下分析Redis原理及实现方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!1 什么是redisredis是NoSQL(也是个巨大的map) 单线程,但是可处理1秒10w的并发

小编给大家分享一下分析Redis原理及实现方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!

1 什么是redis

redis是NoSQL(也是个巨大的map) 单线程,但是可处理1秒10w的并发(数据都在内存中)
使用java对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持久化原理:通过bgsave命令触发,然后父进程执行fork操作创建子进程,子进程创建RDB文件,根据父进程内存生成临时快照文件,完成后对原有文件进行原子替换(定时一次性将所有数据进行快照生成一份副本存储在硬盘中)

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

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

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

优点:实时持久化。

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

5 redis单线程为什么这么快

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

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

  原因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优先移除。
分析redis原理及实现方法

9 缓存击穿的解决方案:

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

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

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

10缓存雪崩的解决方案:

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

  解决方法:

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

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

看完了这篇文章,相信你对分析redis原理及实现方法有了一定的了解,想了解更多相关知识,欢迎关注编程网数据库频道,感谢各位的阅读!

您可能感兴趣的文档:

--结束END--

本文标题: 分析redis原理及实现方法

本文链接: https://www.lsjlt.com/news/52966.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 分析redis原理及实现方法
    小编给大家分享一下分析redis原理及实现方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!1 什么是redisredis是nosql(也是个巨大的map) 单线程,但是可处理1秒10w的并发...
    99+
    2024-04-02
  • redis分布式锁的实现原理实例分析
    这篇文章主要介绍了redis分布式锁的实现原理实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇redis分布式锁的实现原理实例分析文章都会有所收获,下面我们一起来看看吧。首先,为了确保分布式锁可用,我们至...
    99+
    2023-06-29
  • 主成分分析(PCA)及python原理实现
    PCA定义: 该定义来自于秒懂百科:          PCA(principal components analysis)即主成分分析技术,又称主分量分析,旨在利用降维的思想,把多指标转化为少数几个综合指标。         在统计学中,...
    99+
    2023-10-24
    人工智能 机器学习
  • Mybatis分页方式及实现原理
    一、mybatis的4种分页方式(物理分页、逻辑分页) 借助Sql语句Q进行分页(物理分页) 拦截器分页(物理分页)通过拦截器给sq语句末尾加Eimt语句来查询 借助 数组Q进行分页(逻辑分页) RowBounds分页插件实现分页...
    99+
    2023-08-31
    mybatis java 开发语言
  • Redis持久化原理实例分析
    今天小编给大家分享一下Redis持久化原理实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一...
    99+
    2024-04-02
  • 随机森林算法(Random Forest)原理分析及Python实现
    目录 一、基础概念1.监督式机器学习2. 回归和分类3. 决策树4. 随机森林 二、Random Forest 的构造1. 算法实现2.数据的随机选取3. 待选特征的随机选取 三、Ra...
    99+
    2023-09-27
    python 算法 随机森林
  • 分布式锁的原理及Redis怎么实现分布式锁
    这篇文章主要介绍“分布式锁的原理及Redis怎么实现分布式锁”,在日常操作中,相信很多人在分布式锁的原理及Redis怎么实现分布式锁问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2023-02-02
    redis
  • Gochannel实现原理分析
    目录channelchannel类型创建channelchannel操作发送接收关闭无缓冲的通道有缓冲的通道close()如何优雅的从通道循环取值单向通道通道遍历异步通道通道总结ch...
    99+
    2023-05-14
    Go channel Go channel实现原理
  • traceroute原理及分析
    traceroute是一种网络诊断工具,用于分析和跟踪数据包在网络中的路径和延迟。它通过发送一系列的ICMP数据包(或TCP/UDP...
    99+
    2023-09-15
    traceroute
  • 链表原理及java实现的示例分析
    这篇文章主要介绍了链表原理及java实现的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一:单向链表基本介绍链表是一种数据结构,和数组同级。比如,Java中我们使用的...
    99+
    2023-05-30
    java
  • Java Bellman-Ford算法原理及实现方法
    本篇内容介绍了“Java Bellman-Ford算法原理及实现方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一 点睛如果遇到...
    99+
    2023-07-02
  • spring aop底层原理及实现方法
    这篇文章主要介绍spring aop底层原理及实现方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!使用要分析spring aop的底层原理,首先要会使用,先创建一个普通maven webapp项目,引入spring...
    99+
    2023-06-14
  • 汉明码编码原理及校验方法分析
    目录1.奇偶校验2.汉明码汉明码怎么分组:校验码的位置:从发送者的角度,我该怎么发用上汉明码的数据呢:我是接收者,我收到了一串汉明码,怎样用汉明码的性质来检错呢:1.奇偶校验 我们约...
    99+
    2024-04-02
  • java方法及this关键字原理分析详解
    目录步骤1 、给顾客增加一个吃饭的方法步骤 2 、 没有加static的属性和方法,一定需要先new对象步骤 3 、 用new出来的对象去执行eat方法步骤 4 、 怎么理解c.ea...
    99+
    2024-04-02
  • redis分布式锁的实现原理
    小编给大家分享一下redis分布式锁的实现原理,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!分布式锁其实可以理解为:控制分布式系统有序的去对共享资源进行操作,通过互斥来保持一致性。举个不太恰当...
    99+
    2024-04-02
  • 使用Redis实现令牌桶算法原理解析
    在限流算法中有一种令牌桶算法,该算法可以应对短暂的突发流量,这对于现实环境中流量不怎么均匀的情况特别有用,不会频繁的触发限流,对调用方比较友好。 例如,当前限制10qps,大多数情况...
    99+
    2024-04-02
  • Golangmap实践及实现原理解析
    目录Map实践以及实现原理使用实例内存模型创建maphash函数key定位和碰撞解决扩容元素访问删除迭代Map实践以及实现原理 使用实例内存模型创建maphash函数key定位和碰撞...
    99+
    2024-04-02
  • 简易vuex4核心原理及实现源码分析
    目录前言Vuex 核心原理使用方式vuex 运行流程核心原理实现一个简易版的 vuex实现 store 的派发和注册、响应式、injectKey实现 getters、mutation...
    99+
    2023-01-12
    vuex4核心原理 vuex4 简易版
  • react diff 算法实现思路及原理解析
    目录事例分析diff 特点diff 思路实现 diff 算法修改入口文件实现 React.Fragment我们需要修改 children 对比前面几节我们学习了解了 react 的渲...
    99+
    2024-04-02
  • Redis集群原理详细分析
    目录一致性哈希Redis 集群一致性哈希 节点的增加和减少,大部分节点的 Hash一致 package consistenthash import ( "hash/crc32" ...
    99+
    2022-12-19
    Redis集群 Redis集群原理 Redis集群模式
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作