![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
redis
mhHao
Talk less, do more.
展开
-
redis哨兵模式
redis哨兵模式 https://www.cnblogs.com/kevingrace/p/9004460.html转载 2020-12-09 17:54:34 · 257 阅读 · 0 评论 -
Redis5.0 的19 个新特性!
Redis 5.0 GA 正式版发布了!下载地址:download.redis.io/releases/redis-5.0.0.tar.gz源码下载:github.com/antirez/redis/releases/tag/5.0.0先看一下 Redis 5 带来的更新内容:新的流数据类型(Stream data type) https://redis.io/topics/streams-intro2.新的 Redis 模块 API:定时器、集群和字典 API(Timers, Cluste转载 2020-07-12 16:28:43 · 645 阅读 · 0 评论 -
Redis的epoll模型
之前相关文章推荐:Redis高性能与epoll本文,我们从源代码的角度,简单理解Redis是如何使用epoll以及epoll的实现原理。浅入浅出~ 找我交流通过本文了解如下三件事儿,就算是达到了本文目的:1、epoll是Linux提供的系统实现,核心方法只有三个2、epoll效率高,是因为基于红黑树、双向链表、事件回调机制3、redis的IO多路复用,Linux上用epoll进行了实现epoll是Linux内核提供的一种多路复用器,照例问问Linux的男人:EPOLL(7)转载 2020-06-04 22:41:48 · 3016 阅读 · 0 评论 -
基于Netty实现Redis协议的编码解码器
Netty消息处理结构上面是Netty的服务器端基本消息处理结构,为了便于初学者理解,它和真实的结构有稍许出入。Netty是基于NIO的消息处理框架,用来高效处理网络IO。处理网络消息一般走以下步骤监听端口 Bind & Listen接收新连接 Accept通过连接收取客户端发送的字节流,转换成输入消息对象 Read & Decode处理消息,生成输出消息对象 Proce...转载 2019-12-26 22:26:13 · 325 阅读 · 0 评论 -
天下无难试之Redis面试刁难大全
Redis在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在Redis的使用和原理方面对小伙伴们进行各种刁难。作为一名在互联网技术行业打击过成百上千名【请允许我夸张一下】的资深技术面试官,看过了无数落寞的身影失望的离开,略感愧疚,故献上此文,希望各位读者以后面试势如破竹,永无失败!Redis有哪些数据结构?字符串String、字典Hash、列表List、集合Set、有序集合Sor...转载 2019-12-21 22:44:33 · 98 阅读 · 0 评论 -
Redis源码剖析(一)服务器与客户端交互流程
Redis中的C/S模型Redis底层还是基于网络请求的,对于单机数据库而言,网络请求仅仅是在一台机器上交互,即服务器客户端都在一台计算机上当在终端输入redis-serve时,便启动了一个Redis服务器,随后开始初始化内部数据,对于Redis而言包括读取配置文件初始化内部参数创建默认数据库(默认为16个)创建监听套接字并绑定回调函数(接收客户端连接请求)执行事件驱动循环,开始响应客...转载 2019-12-20 18:17:54 · 143 阅读 · 0 评论 -
Redis源码剖析--事件ae
Redis源码剖析搁浅了一段时间,由于自己对事件驱动以及Reactor模式的理解不够深,源码看起来比较吃力,思来想去,所幸自己去实现一个简单的事件驱动模型。于是,采用python的select和queue模块开发了一个简易聊天服务器,实践中学习到的东西很多,回头再来看Redis的ae事件源码,明显轻松多了。事件概述Redis采用Reactor模式来处理事件,简单点来说,Redis会将所有待处理...转载 2019-12-19 20:55:24 · 204 阅读 · 0 评论 -
分布式之redis复习精讲
【原创】分布式之redis复习精讲引言为什么写这篇文章?博主的《分布式之消息队列复习精讲》得到了大家的好评,内心诚惶诚恐,想着再出一篇关于复习精讲的文章。但是还是要说明一下,复习精讲的文章偏面试准备,真正在开发过程中,还是脚踏实地,一步一个脚印,不要投机取巧。考虑到绝大部分写业务的程序员,在实际开发中使用redis的时候,只会setvalue和getvalue两个操作,对redis整体缺乏...转载 2019-12-19 16:17:06 · 78 阅读 · 0 评论 -
Redis源码剖析--通知Notify
Redis在2.8版本以后,增加了键空间(Keyspace Notifications future)通知功能,此特性允许客户端可以以订阅/发布的模式,接收那些对数据库中的键和值有影响的操作事件。Redis关于通知的源代码均在notify.c文件中实现,源码中只有三个功能函数,相对较为简单,但是要想理解其功能,就需要配合server.c和pubsub.c里面的部分代码。Notify概述对于Re...转载 2019-12-17 21:57:35 · 674 阅读 · 0 评论 -
Redis源码剖析--数据库db
按照Redis源码剖析–源码结构解析一文中给自己规定的六个阶段来学习Redis。目前前三个阶段的学习以及完成了,这些都是和系统的耦合性比较小的部分,所以看起来也比较轻松。从这篇博客开始,就进入到第四阶段的源码剖析了。Redis的各个功能的实现将会顺着我们的逐步深入而变得清晰明了,如果读者跟着我的步伐一起学习,到了这一刻,想必也是兴奋的。废话也不多说了,前面所有的数据结构都是为后面的功能实现做铺垫。...转载 2019-12-17 20:09:20 · 153 阅读 · 0 评论 -
Redis源码之--有序集合t_zset
今天来剖析一个比较有意思的数据类型—— 有序集合zset,说实话,它的源码真的是多,而且繁琐,不过,其中的一部分在Redis源码剖析–跳跃表zskiplist中分析过了。有序集合到底是什么呢?有序集合里面存放的元素都自带一个分值,根据这个分值来对元素进行排序,从而使其成为一个有序的集合。接下来,枯燥的Read Code时间到了。Zset数据结构有序集合zset是由RedisObject来管理,...转载 2019-12-16 21:40:27 · 309 阅读 · 0 评论 -
Redis源码剖析--哈希t_hash
不知不觉,从第一篇写Redis源码分析开始,已经过了快一个月了,想想自己的进度,简直慢的吓人啊,这样下去不行,后面得加快脚步了。今天分析的是Redis的又一个数据类型—哈希,哈希键的底层编码形式有OBJ_ENCODING_ZIPLIST和OBJ_ENCODING_HT两种,其中,前者的底层数据结构为压缩列表,后者的底层数据结构为字典。如有对这两个结构不清楚的,可以点击跳转去温故复习一下。Hash...转载 2019-12-15 15:36:11 · 415 阅读 · 0 评论 -
Redis源码剖析--列表t_list
上一篇博客Redis源码剖析–快速列表 带大家一起剖析了quicklist这个底层数据结构的实现原理。Redis对外开放的列表list结构就是采用quicklist作为底层实现(在新版本的Redis源码中,不再采用ziplist和sdlist两种结构,而是统一采用quicklist)。有关列表键的实现源码在t_list.c文件中,大家可以边看源码边看这篇博客,一起来理解。List概述其实在Re...转载 2019-12-15 13:06:27 · 154 阅读 · 0 评论 -
Redis源码剖析--快速列表quicklist
在RedisObject这一篇博客中,有介绍到list结构的底层编码类型有OBJ_ENCODING_QUICKLIST,当时就发现这个底层数据结构被我遗漏了。昨天花了点时间补了补这个知识,看完发现这货就跟STL中的deque的思想一样,顿时觉得又是一个实现超级繁琐但很实用的数据结构。今天就带大家一起来看看这个“二合一”的数据结构。quicklist是Redis在3.2版本加入的新数据结构,其是l...转载 2019-12-14 16:29:52 · 121 阅读 · 0 评论 -
Redis源码剖析--字符串t_string
前面一直在分析Redis的底层数据结构,Redis利用这些底层结构设计了它面向用户可见的五种数据结构,字符串、哈希,链表,集合和有序集合,然后用redisObject对这五种结构进行了封装。从这篇博客开始,带你一点点分析五种数据类型常见命令对应的源码实现,慢慢地解开Redis的面纱。字符串概述字符串是Redis中最为常见的数据存储类型,其底层实现是简单动态字符串sds,因此,该字符串类型是二进...转载 2019-12-14 15:06:15 · 198 阅读 · 0 评论 -
Redis源码剖析--对象object
前面一系列的博客分析了Redis的基本数据结构,有动态字符串sds、双端链表sdlist、字典dict、跳跃表skiplist、整数集合intset和压缩列表ziplist等,这些数据结构对于用户来说是不可见的。Redis在这些数据结构的基础上构建了对用户可见的五种类型,分别是string、hash、list、set和zset,为了更方便的使用这五种数据类型,Redis定义了RedisObjec...转载 2019-12-14 14:32:26 · 111 阅读 · 0 评论 -
Redis常见面试题
介绍:Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API的非关系型数据库。传统数据库遵循 ACID 规则。而 Nosql(Not Only SQL 的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称) 一般为分布式而分布式一般遵循 CAP 定理。Github 源码:htt...转载 2019-12-13 17:14:01 · 317 阅读 · 0 评论 -
Redis源码解析--字典dict
字典是Redis中的一个非常重要的底层数据结构,其应用相当广泛。Redis的数据库就是使用字典作为底层实现的,对数据库的增、删、查、改都是建立在对字典的操作上。此外,字典还是Redis中哈希键的底层实现,当一个哈希键包含的键值对比较多,或者键值对中的元素都是比较长的字符串时,Redis就会使用字典作为哈希键的底层实现。Redis中的字典采用哈希表作为底层实现,在Redis源码文件中,字典的实现代...转载 2019-12-02 20:47:55 · 102 阅读 · 0 评论 -
Redis源码剖析--双端链表sdlist
今天来分析Redis的一个基本数据结构–双端链表,其定义和实现主要在sdlist.h和sdlist.c文件中。其主要用在实现列表键、事务模块保存输入命令和服务器模块,订阅模块保存多个客户端等。sdlist的数据结构Redis为双端链表的每一个节点定义了如下的结构体。// 链表节点定义typedef struct listNode { struct listNode *prev; ...转载 2019-12-01 19:56:49 · 95 阅读 · 0 评论 -
Redis源码剖析--简单动态字符串sds
Redis没有使用C语言的字符串结构,而是自己设计了一个简单的动态字符串结构sds。它的特点是:可动态扩展内存、二进制安全和与传统的C语言字符串类型兼容。下面就从源码的角度来分析一下Redis中sds的实现。(sds的源码实现主要在sds.c和sds.h两个文件中)sds数据结构定义在sds.h文件中,我们可以找到sds的数据结构定义如下:typedef char *sds;看到这里可能...转载 2019-12-01 15:08:02 · 115 阅读 · 0 评论 -
Redis源码剖析--源码结构解析
Redis源码剖析–源码结构解析转载 2019-11-28 18:01:39 · 83 阅读 · 0 评论 -
如何开始阅读Redis源码
自从我写过Redis内部数据结构详解的一系列文章之后,有不少读者前来阅读和讨论。其中也有人问起阅读Redis源码的方法。本文我们就集中讨论这样一个话题:如果你现在想阅读Redis源码,那么从哪里入手?算是对之前系列文章的一个补充。Redis是用C语言实现的,首先,你当然应该从main函数开始读起。但我们在读的时候应该抓住一条主线,也就是当我们向Redis输入一条命令的时候,代码是如何一步步执行的...转载 2019-11-28 09:23:25 · 633 阅读 · 1 评论 -
Redis源码阅读笔记--数据库redisDb
一. 数据库Redis的数据库使用字典作为底层实现,数据库的增、删、查、改都是构建在字典的操作之上的。redis服务器将所有数据库都保存在服务器状态结构redisServer(redis.h/redisServer)的db数组(应该是一个链表)里:struct redisServer {//…// 数据库数组,保存着服务器中所有的数据库redisDb *db;//…}123...原创 2019-09-16 13:01:59 · 140 阅读 · 0 评论 -
Redis 数据库、键过期的实现
之前的文章讲解了 Redis 的数据结构,这回就可以看看作为内存数据库,Redis 是怎么存储数据的。以及键是怎么过期的。阅读这篇文章你将会了解到:Redis 的数据库实现Redis 键过期的策略数据库的实现我们先看代码 server.h/redisServerstruct redisServer{…//保存 db 的数组redisDb *db;//db 的数量int db...转载 2019-09-16 12:27:57 · 330 阅读 · 0 评论 -
面试中关于Redis的问题看这篇就够了
面试中关于Redis的问题看这篇就够了 就我个人而言,我觉得Redis的基本使用是我们每个Java程序员都应该会的。另外,如果需要面试的话,一些关于Redis的理论知识也需要好好的学习一下。学完Redis之后,对照着下面8点看看自己还有那些不足的地方,同时,下面7点也是面试中经常会问到的。另外,《Redis实战》、《Redis设计与实现》是我比较推荐的两本学习Redis的书籍。Redis的两种...转载 2019-09-16 09:46:32 · 100 阅读 · 0 评论 -
Redis内部数据结构详解(1)——dict
首页 > 服务器架构 > 栏目20192019-02-07» Redis源码从哪里读起?20182018-01-22» 漫谈分布式系统、拜占庭将军问题与区块链20172017-02-24» 基于Redis的分布式锁到底安全吗(下)?2017-02-11» 基于Redis的分布式锁到底安全吗(上)?20162016-11-22» Redis内部数据结构详解(7)——in...转载 2019-09-16 09:12:51 · 139 阅读 · 0 评论 -
Redis 的基础数据结构(一) 可变字符串、链表、字典
原文地址:https://www.xilidou.com/2018/03/12/redis-data/这周开始学习 Redis,看看Redis是怎么实现的。所以会写一系列关于 Redis的文章。这篇文章关于 Redis 的基础数据。阅读这篇文章你可以了解:动态字符串(SDS)链表字典三个数据结构 Redis 是怎么实现的。SDSSDS (Simple Dynamic String)是...转载 2019-09-16 09:10:21 · 142 阅读 · 0 评论 -
Redis实战和核心原理详解--快照RDB和AOF数据持久化、RDB和AOF的优缺点对比以及如何选择
https://blog.csdn.net/xlgen157387/article/details/61925524#一、前言我们知道Redis是一款内存服务器,就算我们对自己的服务器足够的信任,不会出现任何软件或者硬件的故障,但也会有可能出现突然断电等情况,造成Redis服务器中的数据失效。因此,我们需要向传统的关系型数据库一样对数据进行备份,将Redis在内存中的数据持久化到硬盘等非易失性...原创 2019-09-16 13:05:47 · 220 阅读 · 0 评论 -
浅析 Redis 复制
https://mp.weixin.qq.com/s?__biz=MzA5ODM5MDU3MA==&mid=2650861687&idx=1&sn=63e9798ebbbd904f297f2aff2fd00c29&scene=23&srcid=0530psTbMWy8mcjJxJJE3On4#rd摘要早期的 RDBMS 被设计为运行在单个CPU之上,读写...原创 2019-09-16 17:49:11 · 87 阅读 · 0 评论 -
Redis实战(四) 集群机制
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...转载 2019-09-16 19:42:03 · 190 阅读 · 0 评论 -
Redis探索之路
把下面这些内容掌握以后,你就可以自诩精通Java后端了。1 计算机基础这部分内容是计算机相关专业同学的课程,但是非科班的小伙伴(譬如在下)就需要花时间恶补了。特别 是计算机网络,操作系统,数据结构这三门课程。 至于编译原理,个人大概懂一点就行了,我也只看过简单的概念和状态机相关的内容,并不是特别重要。2 Java编程这里的Java编程部分包含了很多内容。我们可以分别看看,大概归纳一下就是...转载 2019-09-16 19:46:19 · 108 阅读 · 0 评论 -
缓存架构之12:redis哨兵主备切换的数据丢失问题:异步复制、集群脑裂
计算机世界(计算机体系、操作系统,网络基础,数据库等内容)这是我的后端读书笔记系列文章的第一篇,选取的是最近刚刚圈粉的知名博主刘欣创作的《码农翻身》。这篇文章只是第一部分。本文作为后端系列的开篇之作还是有其意义的,很好地为我们总结了计算机体系,操作系统,网络和数据库等知识。本文内容主要根据知名博主刘欣一作《码农翻身》的内容总结而来,本书的内容风趣幽默,讲解计算机理论原理也是十分透彻,由于书中...原创 2019-09-16 19:49:29 · 117 阅读 · 0 评论 -
缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题
前面一节说到了《为什么说Redis是单线程的以及Redis为什么这么快!》,今天给大家整理一篇关于Redis经常被问到的问题:缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等概念的入门及简单解决方案。一、缓存雪崩缓存雪崩我们可以简单的理解为:由于原有缓存失效,新缓存未到期间(例如:我们设置缓存时采用了相同的过期时间,在同一时刻出现大面积的缓存过期),所有原本应该访问缓存的请求都去查询数据库了...转载 2019-09-21 19:00:40 · 86 阅读 · 0 评论 -
分布式之数据库和缓存双写一致性方案解析
引言为什么写这篇文章?首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。image但是在更新缓存方面,对于更新完数据库,是更新缓存呢,还是删除缓存。又或者是先删除缓存,再更新数据库,其实大家存在很大的争议。目前没有一篇全面的博客,对这几种方案进行解析。于是博主战战兢兢,顶着被大家喷的风险,写了这篇文章。文章结构...转载 2019-10-02 18:36:45 · 90 阅读 · 0 评论 -
Redis 分布式锁进化史解读+缺陷分析
Redis分布式锁进化史张佳 2019年08月14日Redis分布式锁进化史近两年来微服务变得越来越热门,越来越多的应用部署在分布式环境中,在分布式环境中,数据一致性是一直以来需要关注并且去解决的问题,分布式锁也就成为了一种广泛使用的技术,常用的分布式实现方式为Redis,Zookeeper,其中基于Redis的分布式锁的使用更加广泛。但是在工作和网络上看到过各个版本的Redis分布式锁实...转载 2019-08-14 18:55:41 · 169 阅读 · 0 评论