Redis熟悉到精通:开篇

news2024/9/21 22:40:49

文章目录

  • 要点
  • 使用缓存技术的目的
  • 需要缓存机制的数据种类
  • Redis学习资料

要点

  1. 掌握数据结构和缓存的基本使用方法;

  2. 掌握支撑Redis实现高可靠、高性能的技术;

    高可靠

    • Redis之所以可以实现高可靠、高性能,和它的持久化机制、主从复制机制、哨兵、故障自动恢复、切片集 群等密不可分。
    • 单机版Redis,当实例宕机后,如果我们需要从磁盘恢复数据,还会面临一个问题:恢复也是需要时间的,而且实例越大,恢复的时间越⻓,对业务的影响就越大。(解决方案:采用多个副本)
    • 当主节点宕机后,我们把从节点提升上来,这个过程是手动的过程。(解决方案:哨兵,实现自动切换)
    • 切片集群(数据路由和数据迁移)

    高性能

    • Redis的数据都存储在内存中,再加上使用IO多路复用机制。
  3. 精通Redis底层实现原理。

    • list、Hash、Sorted Set为了 减少内存的使用,在数据量比较少时,都采用压缩列表(ziplist)存储,这样可以节省内存。而String和Set 在存储数据时,也尽量选择使用int编码存储,这也是为了节省内存占用。这些都是Redis针对数据结构做的 优化

在这里插入图片描述

使用缓存技术的目的

并不是所有的缓存都只是为了提升速度,因为在分布式系统中,缓存机制实际上是系统级性能在设计的⼀个重要权衡⼿段。 ⽐如当某个数据库的负载⽐较⾼,接近系统瓶颈时,我们就可以使⽤缓存技术, 把负荷分担到其他数据库中,那么这⾥使⽤缓存的⽬的,主要就是负载均衡,⽽不是提升访问速度。

需要缓存机制的数据种类

  • 不变性数据

    • ⾸先是不变性数据,它代表数据永远不发⽣变化,或者是在较⻓⼀个时间段内不会发⽣变化,因此也可认为这部分数据是不变的。 这类数据就是可以优先考虑使⽤缓存技术的⼀种数据类型
  • 弱⼀致性数据

    • 弱一致性数据,它代表数据会经常发生变化,但是业务对数据的一致性要求不高,也就是说,不同 用戶在同一时间点上看到不完全一致的数据,都是可以接受的。
    • 由于这类数据对一致性的要求比较低,所以在设计缓存机制时,你只需要实现最终一致性就可以了。这类数 据在实际业务中也比较多,比如业务的历史分析数据、一些搜索查找返回数据等,即使最近的一些数据没有 记录进去,关系也不大。
    • 针对弱一致性的数据,我们通常使用的缓存失效机制是基于时间的失效方式,同时因为弱一致性的特性,你 可以比较灵活地选择数据存储技术,比如内存Cache,或者是分布式数据库Cache。你甚至可以基于负载均 衡的调度,来设计多层级缓存机制。
  • 强⼀致性数据

    • 强一致性数据,它是指代码数据会经常发生变化,而且业务对数据库的一致性要求非 常高,也就是说当数据发生变更后,其他用戶在系统中的任何地方,都应该看到的是更新后的数据。

    • 那么,针对这种类型的数据,一般是不推荐你去使用缓存机制,因为这类数据在使用缓存时会比较复杂, 而且很容易会引入新的问题.

    • 如果需要缓存:这种数据的缓存一定要采用修改同步的实现方式。也就是说,所有的数据修改都必须确保可以同步修改 缓存与数据库中的数据。

Redis学习资料

工具书:《Redis使用手册》

原理书:《Redis设计与实现》

上面两本书 是统一作者

实战书:《Redis开发与运维》

Redis的关键机制和操作系统、分布式系统的对应知识点
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/740214.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

模拟对讲机会被数字对讲机取代吗?

经常在网上看到有网友讨论,模拟对讲机是不是快被淘汰了,要被数字对讲机取代了。其实不管是模拟还是数字对讲机,都有其各自的优势,数字对讲要想全面取代模拟对讲,还是有些为时尚早。 传统的模拟对讲机主要是将语音、信…

用Python监控并分析城市空气质量

大家好,同为发展中国家,印度也受到空气质量问题的困扰,本文就以印度的城市为例进行数据分析。使用简单的Python代码,分析城市空气质量及其每天在全国范围内(即印度水平)的排名。 在开始之前,先介…

(转载)极限学习机(extreme learning machine, ELM)的回归拟合及分类(matlab实现)

单隐含层前馈神经网络(single-hidden layer feedforward neural network,SLFN)以其良好的学习能力在许多领域中得到了广泛的应用。然而,传统的学习算法(如BP算法等)固有的一些缺点,成为制约其发展的主要瓶颈。前馈神经网络大多采用梯度下降方法&#xff…

阿里云服务器安装mysql并用idea连接

文章目录 前言一.购置阿里云服务器——不定时二.在服务器安装mysql——用时5分钟三.打开服务器mysql的端口——用时2分钟1.找到安全组2.打开默认mysql的3306端口 三.打开idea连接数据库——5分钟四.总用时大约20分钟 前言 记录第一次通过idea连接安装在服务器上的数据库——排错…

在vite创建的vue3项目中加载Cesium世界街道地图的底图

在vite创建的vue3项目中加载Cesium世界街道地图的底图 使用vite创建vue3项目 npm create vitelatestcd到创建的项目文件夹中 npm install安装Cesium npm i cesium vite-plugin-cesium vite -D配置 vite.config.js文件 import { defineConfig } from vite import vue from vitej…

ETHERCAT转PROFINET协议网关连接ethercat网线接口定义

大家好,今天我要给大家介绍一款神奇的产品,YC-PN-ECT,它是一款 PROFINET 从站功能的通讯网关,可以将 PROFINET 网络和 ETHERCAT 网络连接起来,让不同厂家的 PLC 能够互相通信,真是太酷了! PEO…

T100新增栏位,配置ACC作业并提供开窗作业维护

需求分析:将xxxx作业中的一个界面新增一个栏位,并提供开窗功能进行资料的维护。 一、ACC自适应配置文档开发 1.1 azzi650 注册应用分类码【ACC】 新增一个资料 应用分类码【数字】说明 填写文字说明作业编号:这个时候是空的作业名称:也是空的1.2 azzi910 作业基本维护 这个…

做爬虫如何选择Python和C语言

目录 优劣势分析 Python 进行爬虫的优势: Python 进行爬虫的劣势: C进行爬虫的优势: C进行爬虫的劣势: 示例代码说明 Python 示例代码: C语言 示例代码: 怎么选择 优劣势分析 Python 进行爬虫的优…

Java设计模式之创建型-原型模式(UML类图+案例分析)

一、基础概念 通过复制已有对象作为原型,通过复制该原型来返回一个新对象,而不是新建对象,说白了就是不断复制相同的对象罢了。 二、UML类图 三、角色分析 角色描述抽象原型类规定了具体的原型对象必须实现的clone()方法具体原型类实现抽象…

倒计时1天!LeaTech全球CTO领导力峰会TVP四周年庆典即将开幕

引言 3 月 4 日,上海扬子江丽笙精选酒店,LeaTech 全球 CTO 领导力峰会暨腾讯云 TVP 四周年、CTO 训练营校友联合庆典即将开幕。本次 LeaTech 全球 CTO 领导力峰会以“寻光之旅”为主题,腾讯云 TVP 携手 51CTO,联合邀请业内资深领袖…

C# winform界面显示3D点云图像(halcon+VTK)

前一段时间研究了下halcon里的3d算法,想着把3d图像显示在C#编写的软件界面上,试了下halcon的控件,没成功。后来学习了一点VTK的知识,实现了3d图像的显示,可旋转,平移,缩放观察,当然也…

为什么国内做不出好的3A游戏?

个人觉得原因如下: 主要原因: 市场需求和消费观念:国内游戏市场对游戏类型和风格有着自身的特点和需求。一些热门游戏类型,如多人在线游戏、手机游戏等,相对于传统的3A游戏更受国内玩家欢迎。这可能导致国内游戏公司…

QInputDialog 不显示ok或cancel按钮bug

今天遇到一个奇怪问题,就是调用 QInputDialog::getText去获取输入文本,但是无法显示系统ok和cancel按钮,我记得之前是可以的,于是我回退上一个版本是正常,于是对比两个版本代码,发现,自己重写 Q…

【人工智能】贝叶斯网络、概率图模型、全局语义、因果链、朴素贝叶斯模型、枚举推理、变量消元

文章目录 频率学派 vs. 贝叶斯学派贝叶斯学派Probability(概率):独立性/条件独立性:Probability Theory(概率论):Graphical models (概率图模型)什么是图模型(Graphical Models&…

stm32(定时器和PWM知识点)

一、定时器介绍 软件定时 缺点:不精确、占用CPU资源 void Delay500ms() //11.0592MHz { unsigned char i, j, k; _nop_(); i 4; j 129; k 119; do { do { while (--k); } while (--j); } while (--i); }定时器工作原理: 使用精准的时基&#xff0c…

面试靠微服务扭转局面,知乎夸爆的微服务学习笔记到底有多牛?

我们现在的服务-微服务 我感觉微服务不是一个架构,而是像一个生态,应用与应用之间互相独立,却又彼此依赖。通过 DDD 的模型来设计一个地图,把合适的代码放到合适的地方去。实现微服务涉及的工具太多,以下我采用spring…

Python -- 多任务、进程、线程

文章目录 多任务的介绍多任务的执行方式 进程进程的概念进程的作用进程的使用多进程获取进程编号 进程执行带有参数的任务介绍args参数和kwargs的使用 进程注意点进程之间不共享全局变量主进程会等待所有子进程执行结束再结束 线程介绍概念 线程的作用多线程的使用线程执行有参…

在OpenCV中进行图像预处理

今天,我们进一步深入,并处理在图像处理中常用的形态学操作。形态学操作用于提取区域、边缘、形状等。 什么是形态学操作? 形态学操作是在二值图像上进行的。二值图像可能包含许多不完美之处。特别是由一些简单的阈值操作产生的二值图像&#…

2023-07-10 cmake管理的项目中使用vcpkg管理第三方库

一、安装 从Github上克隆Vcpkg仓库然后执行安装命令即可: git clone https://github.com/microsoft/vcpkg .\vcpkg\bootstrap-vcpkg.bat 安装自己需要的第三方库 .\vcpkg\vcpkg install [packages to install] 更多教学可参考: https://learn.microsoft…

kubenetes手动安装V1.22.4

kubenetes手动安装V1.22.4 1、主节点和工作节点需要的组件 提示:为了方便测试请关闭selinux、关闭防火墙、swap. SELinux防火墙的设置: [rootlocalhost]#getenforce Disabled # 修改/etc/selinux/config文件 vim /etc/selinux/config 将SELINUXenfor…