Redis快速上手神册,17W字详解其实Redis也就那么一回事!

news2025/1/25 4:33:40

开始使用Redis

Redis是一个开源的数据库,经常被用来构建高性能的可扩展网络应用。它使用内存数据库,这使得它比其他数据库更快。

Redis用于我们的应用程序中的短期数据。它经常被用于会话或网页头数。

通过使用内存数据库,我们不需要有大的数据集,相反,我们使用小的数据块,让我们把数据存储在机器的内存中,而不是磁盘的内存中。
Redis是一个键值存储,类似于我们在JavaScript中处理对象的方式。有几种语言和框架使用Redis;包括Python,以及Node.js等后端JavaScript框架。

Redis不仅功能强大,而且稳定,理所当然地成为了大型互联网公司的首选。众多大厂在招聘的时候,不仅会要求面试者能简单地使用Redis,还要能深入地理解底层实现原理,并且具备解决常见问题的能力。可以说,熟练掌握Redis已经成为了技术人的一个必备技能。

但是,在学习和使用Redis的过程中,总不可避免地遇见一些棘手的问题
我根据自己多年的从业经验,梳理了一套系统的Redis学习方法。将纷繁复杂的Redis知识和问题归纳在“两大维度,三大主线”这个框架之中,帮助读者建立起系统观和全局观,从而彻底搞懂底层实现原理

Redis简介

  • Redis与Memcached区别
  • Redis优点
  • Redis缺点

     

Redis数据类型

  • String
  • Hash
  • List
  • Set
  • Sorted set

     

Redis事务

  • MULTI&EXEC(原子执行,并非互斥)
  • WATCH&UNWATCH(原子执行+乐观锁)

     

Redis分布式锁

  • 排他锁 SETNX
  • 带有超时特性的锁

     

Redis持久化机制

  • RDB(Redis Database,全量模式)
  • AOF(Append Only File,增量模式)
  • 触发方式
  • 相互比较
  • RDB最佳策略
  • AOF最佳策略
  • Redis消息队列

     

Redis高级数据结构

  • BitMap(String的一些其他命令)
  • 过期策略
  • 内存淘汰策略
  • 主从复制(数据是同步的,类似于MySQL Replication)
  • 哨兵 sentinel(数据是同步的)
  • 集群(数据是分片的,sharing)
  • Hash映射(并非一致性哈希,而是哈希槽)
  • 数据分片
  • 节点间通信协议——Gossip
  • 主从选举——Raft
  • 功能限制
  • 数据迁移/在线扩容
  • Codis
  • twemproxy

     

配置文件+应用场景+Lua脚本+与DB保持一致

Redis源码

  • 线程模型——单线程
  • RedisObject

     

这份文档从构建一个键值数据库的关键架构入手,不仅带你建立起全局观,还帮你迅速抓住核心主线。除此之外,还会具体讲解数据结构、线程模型、网络框架、持久化、主从同步和切片集群等,帮你搞懂底层原理。相信这对于所有层次的Redis使用者都是一份非常完美的学习使用教程了

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

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

相关文章

表空间的空间管理算法

存储结构 逻辑结构 物理结构 database tablespace --> datafile segment extent oracle --> os block block 表空间的空间管理: DMT(dictionary management tablespace): LMT(local management tablespace): SQL>…

[计算机毕业设计]远程监督的跨语言实体关系抽取

前言 📅大四是整个大学期间最忙碌的时光,一边要忙着准备考研,考公,考教资或者实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过…

代码随想录算法训练营day57 | 647. 回文子串,516.最长回文子序列

647. 回文子串: 暴力解法:两层for循环,遍历区间起始位置和终止位置,然后判断这个区间是不是回文。时间复杂度:O(n^3). Output Limit Exceeded class Solution:#时间复杂度:O(n^3)def countSubstrings(self, s: s…

线程与进程

目录 1.为什么使用线程? 2.什么是线程? 3.进程和线程的工作原理 3.1 进程 3.2 线程 4.线程安全问题 5.总结:线程和进程的区别(面试题) 1.为什么使用线程? 线程与进程都是用来解决并发编程问题的&…

推荐 5 个不错的 React Native UI 库

最近在做一个 React Native 的项目,调研了下 UI 库,下面列举 5 个: React Native Elements React Native Element 是相当闻名的 UI 库,它遵循 Material 设计规范,同时你还可以精细地控制每一个组件。 TL;DR 22.2k G…

朴素贝叶斯——垃圾邮件过滤

文章目录利用朴素贝叶斯进行文档分类1、获取数据集2、切分文本3、构建词表和分类4、构建分类器5、测试算法利用朴素贝叶斯进行垃圾邮件过滤1、导入数据集2、垃圾邮件预测总结利用朴素贝叶斯进行文档分类 1、获取数据集 下载数据集,获取到一些邮件文档。其中ham文件…

Intersoft WebUI Studio for asp.net/asp.mvc

企业 Web 开发的终极工具集。WebUI 建立在坚实的框架之上,为 ASP.NET 提供创新和先进的 40 多个优质 UI 组件,让您轻松及时地构建强大的业务 Web 应用程序。 不仅仅是全面的 UI 工具集。 在提供业界最佳网络体验的愿景的支持下,WebUI 提供了前…

AQS源码解析 8.共享模式_Semaphore信号量

AQS源码解析—共享模式_Semaphore信号量 简介 synchronized 可以起到锁的作用,但某个时间段内,只能有一个线程允许执行。 Semaphore(信号量)用来限制能同时访问共享资源的线程上限,非重入锁。 Semaphore 是什么&am…

377. 组合总和 Ⅳ【完全背包】求排列数:外层for背包,内层for物品;求组合数:外层for物品,内层for背包;

377. 组合总和 Ⅳ 给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。 题目数据保证答案符合 32 位整数范围。 示例 1: 输入:nums [1,2,3], target 4 输出&#x…

如何利用快解析远程访问家庭智能网关

随着家庭宽带用户的暴增,涌现出了许多连接家居设备和控制中心的产品,如家庭智能网关。家庭智能网关是家居智能化的心脏,通过它实现系统的信息采集、信息输入、信息输出、集中控制、远程控制、联动控制等功能。 ​ 智能家庭网关具备智能家居控…

springcloud24:分布式事务 Seata处理分布式事务总结篇

分布式事务: 分布式事务的问题: 1:1 一个servlet 对应一个 数据库1:N 一个servlet对应多个数据库N:N 多个servlet对应多个数据库 全局事务一致性问题(全局数据一致性的保证) Seata是分布式事务的解决方案 分…

Python标准库之os

1. OS标准库简介 顾名思义,OS表示Operating System,即操作系统。OS标准库是一个操作系统接口模块,提供一些方便使用操作系统相关功能的函数,具体安装位置可通过导入os模块查看os.__file__属性得到。当需要在Python代码中调用OS相…

WPF-页面-DataGrid数据处理-多线程-Winform嵌入

页面 if(NavigationService.CanGoBack true) NavigationService.GoBack(); NavigationService.Navigate(new Uri("Page.xaml",UriKind.Relative));打印对话框PrintDialog如果要一下启动两个窗口,可以重写App.cs中的OnStartUP方法设置窗口所属关系&#…

【我的渲染技术进阶之旅】你知道数字图像处理的标准图上的女孩子是谁吗?背后的故事你了解吗?为啥这张名为Lenna的图会成为数字图像处理的标准图呢?

文章目录一、先来看一张神图:Lenna图二、图片中的妹子是谁?三、为何要使用Lenna图像?四、谁制作了Lenna图像?五、人红是非多六、福利时间七、岁月神偷文末有福利 一、先来看一张神图:Lenna图 想必所有搞过图像处理的人…

LQ0265 汉诺塔【水题】

题目来源:蓝桥杯2012初赛 Java A组C题 题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。 大梵天创造世界的时候做了三…

Map和Set常见操作汇总

作者:~小明学编程 文章专栏:Java数据结构 格言:目之所及皆为回忆,心之所想皆为过往 目录 Map 介绍 什么是Map? Map.Entry,> 常用方法 代码 Map中的注意点总结 Set 常见方法汇总 Set中的注意点总结 Map …

Ngxin--源码分析 缓冲区链表

1.基本数据结构 在处理 TCP/HTTP 请求时会经常创建多个缓冲区来存放数据, Nginx缓冲区块简单地组织一个单向链表struct ngx_chain_s {ngx_buf_t *buf;ngx_chain_t *next; };buf: 缓冲区指针 next 下一个链表节点 注意: ngx_chain_t是…

自定义数据类型:结构体、枚举、联合

个人主页:平行线也会相交 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【C/C】 目录结构体结构体类型的声明结构的自引用结构体变量的定义和初始化结构体内存对齐练习1练习2(结构体嵌套问题&#x…

JSP表达式(EL)

一、介绍: EL(Expression Language)可用来代替JSP中的各类脚本,提高编程的灵活度,简化代码的编写。 二、EL的限制: 不能声明变量,需要使用JSTL或者JavaBean Action设置变量。 三、EL的标准格…

使用D435i+Avia跑Fast-LIVO

前言 最近Fast-LIVO开源了,之前看它的论文的时候发现效果很优秀,于是用实验室现有的设备尝试一下。这里主要记录一下使用不带外触发功能的D435i Avia跑Fast-LIVO的过程,为了适配代码,主要修改了雷达的驱动、相机的launch文件、以…