随笔分类 - Redis
摘要:《Redis设计与实现》学习笔记-集群 Redis集群是Redis提供的分布式数据库方案,集群通过分片(sharding)来进行数据共享,并提供复制和故障转移功能。 下面会对集群的节点、槽指派、命令执行、重新分片、转向、故障转移、消息等各个方面进行介绍 一、节点 1. 连接节点 一个Redis集群通
阅读全文
摘要:Redis zset 底层结构 概要 在 Redis 的五种主要数据类型中,zset(有序集合)类型可能是最复杂,但也是最强大的一种。zset 不仅可以存储键值对,还可以为每个元素分配一个分数,然后根据这个分数进行排序。这使得 Zset 非常适合用于实现排行榜、时间线等功能。 一、Zset底层结构
阅读全文
摘要:为什么 Redis Cluster 是16384个槽位 Redis集群通过分片的方式来保存数据库中的键值对:集群的整个数据库被分为16384个槽(slot),数据库中的每个键都属于这16384个槽的其中一个,集群中的每个节点可以处理0个或最多16384个槽。 那么为什么被分为16384个槽?我们从以
阅读全文
摘要:redis的哪些命令具有原子性? Redis 提供的命令大部分都是原子操作,也就是说,在单线程模型下,Redis 执行单条命令时,不会被其他命令插入,即命令在执行期间不会被其他命令打断,这就保证了它的原子性。 以下是一些 Redis 基本的原子操作命令: 1. SET key value:将字符串值
阅读全文
摘要:Redis大Key删除引发的线上事故 背景 有一次公司运维在删除redis相关业务key时,由于没有全面评估风险,直接在生产环境执行了del,导致 Redis 进程被阻塞了十几秒,最终导致集群的容量和请求出现“倾斜问题”,进而引发了线上各种依赖该redis集群的业务出现异常。 线上事故一定要引起反思
阅读全文
摘要:Redis缓存淘汰策略 前言 长期将Redis作为缓存使用,难免会遇到内存空间存储瓶颈,当Redis内存超出物理内存限制时,内存数据就会与磁盘产生频繁交换,使Redis性能急剧下降。此时如何淘汰无用数据释放空间,存储新数据就变得尤为重要了。解决这个问题就涉及到缓存系统的一个重要机制,即缓存数据的淘汰
阅读全文
摘要:Docker搭建redis集群 在《Redis的三种集群模式》这篇文章中,我们初步认识了redis三种不同的集群模式,接下来这篇文章,我们再通过实际部署搭建来对它们进行进一步的学习和了解。 一、主从复制模式 前提条件 这里准备了三台虚拟主机:192.168.205.10、192.168.205.11
阅读全文
摘要:Redis的三种集群模式 概要 通过持久化功能(详情请参考文章《Redis的持久化方式》),Redis保证了即使在服务器重启的情况下也不会丢失(或少量丢失)数据,因为持久化会把内存中数据保存到硬盘上,重启会从硬盘上加载数据。 但是由于数据是存储在一台服务器上的,如果这台服务器出现硬盘故障等问题,也会
阅读全文
摘要:Redis的持久化方式 概要 什么是持久化(Persistence)?即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在数据库中,或者存储在磁盘文件中、XML数据文件中等等。 一、Redis为什么要持久化? Redis是一个内存数据库,所有的数据
阅读全文
摘要:Redis实现消息队列 消息队列(Message Queue) 1. 什么是消息队列? 消息队列(Message Queue)是一种应用间的通信方式,消息发送后可以立即返回,由消息系统来确保消息的可靠传递。消息发布者只管把消息发布到 MQ 中而不用管谁来取,消息使用者只管从 MQ 中取消息而不管是谁
阅读全文
摘要:Redis使用场景梳理 一、Sorted Set(有序集合)- 排行榜 排行榜是业务开发中常见的一个场景。 1. 场景一:选手报名参加活动,观众可以对选手进行投票,每个观众对同一名选手只能投一票,活动期间最多投N票 1)功能1:返回TOP 10的选手信息及投票数 2)功能2:返回活动总参与选手数及总
阅读全文
摘要:redis基础知识 Redis有9种基本数据类型,大部分盆友最熟悉的有这5种:string、hash、list、set、zset。其实,除此之外,经常用到的还有:bitmap、hyperloglog、geohash、stream。 下面来整理下各个数据类型的概念和基本用法。 一、 普通数据类型(5种
阅读全文
摘要:布隆过滤器(Bloom Filter) 1、布隆过滤器要解决的问题? 想判断一个元素是不是在一个集合里? 思路: 1) 一般我们最先想到的是将集合中所有元素保存起来,然后通过比较确定。链表(增删改容易,查询困难)、树、散列表(又叫哈希表,Hash table)等等数据结构都是这种思路。 2) 但是随
阅读全文
摘要:Redis执行失败后如何处理 redis出现错误的两种情况:1) Redis连接失败,系统异常 2)Redis执行失败 1、redis连接失败,抛出异常(RedisException类) 如果无法访问Redis服务器,phpredis会抛出RedisException对象。如果连接 出现问题,Red
阅读全文
摘要:Redis实现分布式锁 概要 分布式锁是一种在分布式系统中,用于确保多个节点在并发访问共享资源时,保证资源操作的互斥性和一致性的一种机制。它在多台机器上协调资源访问,防止不同节点同时对同一资源进行操作,从而避免数据不一致或资源竞争的问题。 一、分布式锁的常见实现方式 分布式锁是用来解决分布式应用中并
阅读全文
摘要:Redis的雪崩、击穿、穿透 Redis的雪崩,击穿,穿透,三者其实都差不多,但是又有一些区别。它们是缓存最大的问题,要么不出现,一旦出现就是致命性的问题。 一、缓存穿透(Cache Penetration) 1. 什么是缓存穿透 请求去查询一条在数据库中根本就不存在的数据,也就是缓存和数据库中都查
阅读全文
摘要:Redis键通知机制 一、概念 自从 redis2.8.0 以后出了一个新特性,Keyspace Notifications 称为“键空间通知”。 这个特性大概是,凡是实现了Redis的Pub/Sub的客户端,只需要订阅相应Channel,就可以获得对Key操作的一些事件,从而可以处理一些业务。 比
阅读全文