写点什么

李子捌 Redis 精通系列文章 研究分享| 内容合集

作者:李子捌
  • 2021 年 11 月 27 日
  • 本文字数:2791 字

    阅读完需:约 9 分钟

李子捌 Redis精通系列文章 研究分享| 内容合集

Redis 是一个开源(BSD 许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。  目前国内外对 Redis 的使用场景可以说无处不在,Redis 也成为了高级程序员必备的知识点,本专题合集主要涉及到 Redis 的高级部分知识,涉及到持久化、事务、主从复制、高可用、分布式等知识点,认真看完必定有不少收获。


Redis 之主从复制详述,看完这篇文章不再稀里糊涂

本篇文章讲述的是 Redis 主从复制的技术。主从复制是 Redis 分布式的基石,也是 Redis 高可用的保障。在 Redis 中,被复制的服务器称为主服务器(Master),对主服务器进行复制的服务器称为从服务器(Slave)。文中介绍了主从复制的演进,各个版本的实现的细节,以及主从复制的整个架构体系。​


Redis 分布式锁就应该这样学,精细胞与卵细胞的故事告诉你真实原理!

本篇文章讲述的是 Redis 分布式锁的技术。分布式知识是考验一个程序员知识面广度和深度很好的度量标准,而分布式锁又是其中非常重要的一个知识点。可以说面试只要谈到分布式,没有不问分布式锁的。文中详述了分布式锁的演进,集群中分布式所得实现,以及 RedLock、Redisson 等知识​


Redis 值 Sentinel(哨兵)详述,图文并茂才能浅显易懂

主从复制奠定了 Redis 分布式的基础,但是普通的主从复制并不能达到高可用的状态。在普通的主从复制模式下,如果主服务器宕机,就只能通过运维人员手动切换主服务器,很显然这种方案并不可取。针对上述情况,Redis 官方推出了可抵抗节点故障的高可用方案——Redis Sentinel(哨兵)。Redis Sentinel(哨兵):由一个或多个 Sentinel 实例组成的 Sentinel 系统,它可以监视任意多个主从服务器,当监视的主服务器宕机时,自动下线主服务器,并且择优选取从服务器升级为新的主服务器。


Redis 集群模式,你若还是一知半解,试试仔细阅读一遍这篇文章

Redis 集群是 Redis 提供的分布式数据库方案,集群通过分片(sharding)进行数据共享,Redis 集群主要实现了以下目标:在 1000 个节点的时候仍能表现得很好并且可扩展性是线性的。没有合并操作(多个节点不存在相同的键),这样在 Redis 的数据模型中最典型的大数据值中也能有很好的表现。写入安全,那些与大多数节点相连的客户端所做的写入操作,系统尝试全部都保存下来。但是 Redis 无法保证数据完全不丢失,异步同步的主从复制无论如何都会存在数据丢失的情况。可用性,主节点不可用,从节点能替换主节点工作。​


Redis 的 LRU(Least Recently Used) 算法你了解多少?

Redis 是基于内存存储的 key-value 数据库,我们知道内存虽然快但空间小,当物理内存达到上限时,系统就会跑的很慢,这是因为 swap 机制会将部分内存的数据转移到 swap 分区中,通过与 swap 的交换保证系统继续运行;但是 swap 属于硬盘存储,速度远远比不上内存,尤其是对于 Redis 这种 QPS 非常高的服务,发生这种情况是无法接收的。(注意如果 swap 分区内存也满了,系统就会发生错误!)​


LRU 经常被吐槽,要不试试 LFU?本文详述 LFU(Least Frequently Used)

LRU 有一个明显的缺点,它无法正确的表示一个 Key 的热度,如果一个 key 从未被访问过,仅仅发生内存淘汰的前一会儿被用户访问了一下,在 LRU 算法中这会被认为是一个热 key。LFU(Least Frequently Used)是 Redis 4.0 引入的淘汰算法,它通过 key 的访问频率比较来淘汰 key,重点突出的是 Frequently Used。


都在用 MQ,Redis 的 Pub/Sub 也可以试着了解下

​Redis 的 Pub/Sub 发布订阅,是 Redis 一步步完善消息队列功能的一个进步点,虽然现在没人用 Pub/Sub 做消息队列,但是它的思想和功能也非常值得学习。​


Redis 之 Geospatial,助你轻松实现附近的 xx 功能

Geospatial 是 Redis 在 3.2 版本以后增加的地理位置 GEO 模块,这个模块可以用来实现微信附近的人,在线点餐“附近的餐馆”等位置功能。​


HyperLogLog 这里面水很深,但是你必须趟一趟

HyperLogLog 是用来做基数统计的算法,它提供不精确的去重计数方案(这个不精确并不是非常不精确),标准误差是 0.81%,对于 UV 这种统计来说这样的误差范围是被允许的。HyperLogLog 的优点在于,输入元素的数量或者体积非常大时,基数计算的存储空间是固定的。在 Redis 中,每个 HyperLogLog 键只需要花费 12KB 内存,就可以计算接近 2^64 个不同的基数。​


签到功能怎么做?Bitmaps 助你一臂之力

​Bitmaps 称为位图,它不是一种数据类型。网上很多视频教程把 Bitmaps 称为数据类型,应该是不正确的。Bitmaps 是 Redis 提供给使用者用于操作位的“数据类型”。​


数据库不能没有事务,今天他来了——Redis 事务详述

Redis 类似大多数成熟的数据库系统一样,提供了事务机制。Redis 的事务机制非常简单,它没有严格的事务模型,无法像关系型数据库一样保证操作的原子性。Redis 事务最大的作用是保证多个指令的串行执行,它可以借助于 Redis 单线程读写的特性,保证 Redis 事务中的指令不会被事务外的指令打搅,不过要注意它不是原子性的。​


Redis 高可用的绝对的利器——持久化(RDB 和 AOF)

Redis 的非常快,很大一部分原因是因为 Redis 的数据存储在内存中,既然在内存中,那么当服务器宕机或者断电的时候,数据就会全部丢失了,所以 Redis 提供了两种机制来保证 Redis 数据不会因为故障而全部丢失,这种机制称为 Redis 的持久化机制。​


听说你的服务经常被打崩?试试布隆过滤器(Bloom Filter)

布隆过滤器(Bloom Filter)是 1970 年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。​


Skip List(跳跃列表) 它到底好在哪?今天我们不仅只聊为什么,还手写一个玩玩

跳表全称叫做跳跃表,简称跳表。跳表是一个随机化的数据结构,实质就是一种可以进行二分查找的有序链表。跳表在原有的有序链表上面增加了多级索引,通过索引来实现快速查找。跳表不仅能提高搜索性能,同时也可以提高插入和删除操作的性能。​


限流系列文章——令牌桶限流

令牌桶算法比较简单,它就好比摇号买房,拿到号的人才有资格买,没拿到号的就只能等下次了(还好小编不需摇号,因为买不起!)。​


限流系列文章——漏斗限流

漏斗容量有限,当流水的的速度小于灌水的速度,漏斗就会水满溢出,利用这个原理我们可以设计限流代码!漏斗的剩余的空间就代表着当前行为(请求)可以持续进行的数量,漏斗的流水速率代表系统允许行为(请求)发生的最大频率,通常安装系统的处理能力权衡后进行设值。​


限流系列文章——滑动窗口限流

指定时间 T 内,只允许发生 N 次。我们可以将这个指定时间 T,看成一个滑动时间窗口(定宽)。我们采用 Redis 的 zset 基本数据类型的 score 来圈出这个滑动时间窗口。在实际操作 zset 的过程中,我们只需要保留在这个滑动时间窗口以内的数据,其他的数据不处理即可。

发布于: 2021 年 11 月 27 日阅读数: 14
用户头像

李子捌

关注

华为云享专家 2020.07.20 加入

公众号【李子捌】

评论

发布
暂无评论
李子捌 Redis精通系列文章 研究分享| 内容合集