1. rdb 1.1 rdb 概念在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话的SnapShot快照,它恢复时是将快照文化直接读到内存里 1.2 rdb 工作机制每隔一段时间,就把内存中的数据保存到硬盘上的指定文件中 1.3 rdb是默认开启的 1.4 rdb的持久化过程redis会单独创建一个子进程来进行持久化,先将数据写入到一个临时文件中,
转载
2023-06-29 14:44:06
62阅读
背景线上经常遇到用户想知道自己 Redis 实例中数据的内存分布情况。为了不影响线上实例的使用,我们一般会采用 bgsave 生成 dump.rdb 文件,再结合 redis-rdb-tools 和 sqlite 来进行静态分析。总的来说,整个分析的过程简单而实用,是每一个 Redis 的用户都非常值得掌握的一个方法。创建备份自建 Redis 可在客户端执行 bgsave 生成
转载
2023-06-29 11:05:58
546阅读
Redis 字符串键的实现(t_string)1. 字符串命令介绍redis中的所有字符串命令如下:字符串类型命令详解序号命令及描述1SET key value:设置指定 key 的值2GET key: 获取指定 key 的值。3GETRANGE key start end: 返回 key 中字符串值的子字符4GETSET key value:将给定 key 的值设为 value ,并返回 key
背景大部分公司或项目在早期建设为了统一开发标准,会通过共用redis的方式提升交付一致性。线上经常遇到用户想知道自己Redis实例中数据的内存分布情况。为了不影响线上实例的使用,我们一般会采用bgsave生成dump.rdb文件,再结合redis-rdb-tools和sqlite来进行静态分析。创建备份自建Redis可在客户端执行bgsave生成rdb文件。 阿里云数据库Redis版可以在控制台上
转载
2023-08-25 15:47:22
121阅读
Redis源码全景图Deps目录:第三方依赖库,那么为啥要引进第三方呢?因为Redis作为一个用C语言写的用户态程序,它的不少功能是依赖标准的glibc库提供的,比如内存分配、行读写、文件读写、子进程/线程创建等。但是,glibc库提供的某些功能实现,效率并不高。我举个简单的例子,glibc 库中实现的内存分配器的性能就不是很高,它的内存碎片化情况也比较严重。因此为了避免对系统性能产生影响,Red
转载
2023-08-15 17:19:48
48阅读
背景: 在高并发的场景下面,我们离不开缓存,那么缓存到底是什么实现了, 由此我想到的就是去看Redis源码,他的实现是由C语言实现,那么做为一个java、golang程序员,我们如何看懂呢? 其实秉承着语言都是相通的特性,就是开始分析Redis源码。Redis数据结构分析第一个: 我们先弄明白 SDS 其实就是定义redis 5中数据类型的数据结构定义 SDS:字符串即 Simple Dynami
转载
2023-08-15 15:53:08
60阅读
文章目录Scrapy-Redis的使用安装源码分析picklecompat.py文件queue.py文件Base类FifoQueue类LifoQueue类PriorityQueue类dupefilter.py文件scheduler.py文件总结Scrapy-Redis的配置核心配置Redis连接配置第一种方式第二种方式调度队列配置持久化配置重爬Pipline配置 Scrapy-Redis的使用G
转载
2023-09-19 00:29:55
25阅读
文章目录一、初识RDB二、RDB特点1、优势2、劣势三、RDB操作1、概述2、操作四、总结 一、初识RDBRDB 全称(Redis DataBase) 在指定的时间间隔内将内存中的数据集快照写入磁盘, 也就是行话讲的Snapshot快照,它恢复数据时是将快照文件直接读到内存里官网介绍:流程图 看不懂这图的话,继续往下看文章,看完文章后再回来!二、RDB特点1、优势适合大规模的数据恢复对数据完整性
转载
2023-07-27 19:59:57
401阅读
一直有打算写篇关于redis源代码分析的文章,一直很忙,还好最近公司终于闲了一点,总算有点时间学习了,于是终于可以兑现承诺了,废话就到此吧,开始我们的源代码分析,在文章的开头我们把所有服务端文件列出来,并且标示出其作用:adlist.c //双向链表ae.c //事件驱动ae_epoll.c //epoll模型ae_kqueue.c //kqueue模型( freebsd)ae_select.c
11.Redis_事务_秒杀案例11.1.解决计数器和人员记录的事务操作11.2.Redis事务--秒杀并发模拟11.2.1.联网11.2.2.无网络11.2.3.测试及结果11.2.3.1.通过ab测试11.2.3.2.超卖11.3.超卖问题11.4.利用乐观锁淘汰用户,解决超卖问题。11.5.继续增加并发测试11.5.1.连接有限制11.5.2.已经秒光,可是还有库存11.5.3.连接超时,
转载
2023-08-08 22:13:04
25阅读
1.Redis比memcache快 Redis具有事务,持久化等机制,但是它还能做到高性能,原因包括如下:Libevent。和Memcached不同,Redis并没有选择libevent。Libevent为了迎合通用性造成代码庞大(目前Redis代码还不到libevent的1/3)及牺牲了在特定平台的不少性能。Redis用libevent中两个文件修改实现了自己的epoll event loop
转载
2023-07-06 16:17:23
33阅读
一,Redis介绍内存数据库Redis特点:开源的(BSD协议),使用ANSI C 编写,基于内存的且支持持久化,高性能的Key-Value的NoSQL数据库单线程运行,省去了线程上下文切换带来的性能开销,效率更高。支持数据结构类型丰富,有字符串(strings),散列(hashes),列表(lists),集合(sets), 有序集合(sorted sets),位图(bitmaps),
转载
2023-08-15 17:27:09
133阅读
前言 redis的空间键通知是在2.8.0版本以后加入的,客户端通过发布订阅的方式,订阅某个频道,接收通过某种方式影响redis中数据的事件.目录: 1.空间键事件分类 2.如何启用redis的空间键通知 3.命令行操作示例 4.ioredis操作示例1.空间键事件分类 每一个影响redis数据空间的操作,都会产生两种事件,分别是key-space和key-event事件 key-s
转载
2023-08-11 10:22:06
74阅读
针对“附近的人”这一位置服务领域的应用场景,常见的可使用 PG、MySQL 和 MongoDB 等多种 DB 的空间索引进行实现。而 Redis 另辟蹊径,结合其有序队列 ZSET 以及 GEOHASH 编码,实现了空间搜索功能,且拥有极高的运行效率。
本文将从源码角度对其算法原理进行解析,并推算查询时间复杂度。要提供完整的“附近的人”服务,最基本的是要实现“增”、“删”、“查”的功
课程详情1、什么是 SLOWLOGSlow log 是 Redis 用来记录查询执行时间的日志系统。查询执行时间指的是不包括像客户端响应(talking)、发送回复等 IO 操作,而单单是执行一个查询命令所耗费的时间。 另外,slow log 保存在内存里面,读写速度非常快,因此你可以放心地使用它,不必担心因为开启 slow log 而损害 Redis 的速度。2、设置 SL
转载
2023-07-03 17:09:36
253阅读
Redis为kv的,而Redis底层又是由c语言写成的,一切皆字典dict,和java的一切皆对象ObjectRedis的key类型一般为字符串,value为redis类型Redi
原创
2022-05-26 01:19:41
246阅读
一 现象 某个业务最近2个月每月1号凌晨0点都有业务高峰,但是业务所使用的 Redis 服务 cpu 负载100% ,无法对外提供服务进而影响整体业务访问。 二 分析 2.1 问题分析 因为该业务使用的是云Redis ,我们通过监控看 CPU,QPS ,带宽。 出现问题时系统的QPS 大约为 120 ...
转载
2021-08-19 09:41:00
231阅读
2评论
C/C++Linux服务器开发/后台架构师知识体系Redis是什么Key-Value形式的NoSQL存储系统内存数据库redis单点吞吐量单点TPS达到8万/秒,QPS达到10万/秒。redis的5种存储类型string、list、set、map(hash)、stored-setredis的string类型能表达3种类型
原创
2022-04-25 11:34:33
220阅读
# Redis源码分析
## 概述
在进行Redis源码分析之前,我们首先需要了解Redis是什么以及它的主要功能和特点。Redis是一个开源的内存数据库,可以用作缓存、消息队列、会话存储等多种用途。Redis的源代码是使用C语言编写的,通过阅读Redis源码可以深入了解其内部原理和实现方式,从而更好地理解Redis的工作机制。
## 源码分析流程
下面是进行Redis源码分析的整体流程和步骤
缓存雪崩对于系统 A,假设每天高峰期每秒 5000 个请求,本来缓存在高峰期可以扛住每秒 4000 个请求,但是缓存机器意外发生了全盘宕机。缓存挂了,此时 1 秒 5000 个请求全部落数据库,数据库必然扛不住,它会报一下警,然后就挂了。此时,如果没有采用什么特别的方案来处理这个故障,DBA 很着急,重启数据库,但是数据库立马又被新的流量给打死了,这就是缓存雪崩。缓存雪崩的事前事中事后的解决方案如