redis
David_lou
这个作者很懒,什么都没留下…
展开
-
《redis》10-redis切片集群
上面的章节我们讲完了redis主从模式,但是主库和从库的数据基本上保持一致,那么就会遇到一个问题,在主库不断写入的情况下,数据越来越多,redis作为内存存储系统,数据存储在内存中,内存不能无限扩大,而且随着存储数据的不断增加,fork的子线程在做RDB文件备份的时候,速度越来越慢。mysql也会遇到这样的问题,之前Facebook出现的问题,用户信息表随着注册的用不端增加,导致主键字段长度不够,全球10亿用户的信息难道都存储在一个数据库里?redis提出了解决方案,切片集群。纵向扩展,随着数据的不原创 2020-10-11 17:58:58 · 454 阅读 · 0 评论 -
《redis》9-哨兵集群谁做主
上一节我们讲到哨兵集群做的三件事情协商主库是否客观下线 选出新的主库 通知从库和客户端1客观下线是哨兵集群中协商处理的,比如A哨兵通过ping 主库的ip_port发现主库已经主观下线了,然后发起哨兵集群间通信,获取其他哨兵对于主库的判断,如果超过了阈值(可设置),就可以标记主库为客观下线但是第2/3步只需要一个哨兵单独执行即可,那到底谁来执行第2/3步呢。这个时候我们引入哨兵集群另外一个特别重要的概念,哨兵选举制度哨兵leader选举在哨兵集群当中,需要选出一个主席,主持选择新主库和原创 2020-10-11 17:06:59 · 189 阅读 · 0 评论 -
《redis》8-主库宕机怎么办
上面一节我们讲了redis通过repliceof 组成的主从模式,主库负责执行读写操作,从库负责执行读操作。写的操作通过长链接同步给从库。这个地方有个很大的风险,主库宕机了怎么办,主库宕机之后,客户端的写操作就没有服务器可以执行了为了解决这个隐患,redis推出了哨兵机制。哨兵是一个特殊的redis线程,通过定时ping主库和从库的ip-port来检测redis服务的状态。哨兵负责的三个主要工作:哨兵机制判断主库是否下线 选出新的主库,切换主库 把新的主库通知给其他从库和客户端判断主库下线原创 2020-10-11 16:11:26 · 239 阅读 · 0 评论 -
《redis》7-redis的主从一致性
redis为了保证高可用性,除了使用AOF保证启动之后能恢复数据,还要保证不中断服务,这样的才能实现高可用,最简单的例子就是增加服务器的数量,却别于一般的web服务的增加,redis是数据存储,需要保证数据的正确性和一致性。所以redis设计了多服务的主从模式:redis主从模式:主从模式,一个master,多个follower从master服务器同步数据主从从模式,一个master,A,B,C三个follower从master同步数据,E,F,G从A同步数据,即redis服务A既是maste原创 2020-10-11 13:45:37 · 632 阅读 · 0 评论 -
《redis》6-redis宕机之后快速恢复数据
上一节讲到redis为了保证高可用,使用了AOF机制来确保数据不丢失,宕机之后,如果想要恢复数据,只能顺序执行aof的日志。但是对于4G满的redis数据,逐条执行aof日志时间太长,有没有其他方式呢?redis又引入了另外一个方式:RDBRDB:redis databaseRDB其实就是redis内存数据的快照-snapshot。这个快照保存的是某一个时间节点,redis内容中所有的数据,生成RDB文件,我们把它保存在文件系统,然后在宕机之后可以读取到内存中,完成数据的快速恢复。如何生成快照:原创 2020-10-11 13:11:45 · 1588 阅读 · 0 评论 -
《redis》5-redis的写后日志AOF
redis作为内存存储系统,数据都保存在内存中,当服务器断电之后数据都会丢失,为了能恢复数据,redis准备了AOF(Append only file).AOF是写后日志,在执行完redis的操作命令之后,会把操作记录追加到日志文件中。redis写命令:put aaa:123432在执行完当前命令之后,会把put aaa:123432这条命令追加到日志文件中,这个就是AOF机制。Mysql:WALmysql 又一个WAL机制非常类似,Write ahead logging,在引擎中会追加原创 2020-10-11 12:05:03 · 436 阅读 · 0 评论 -
《redis》4-redis是单线程?
江湖传言,redis是单线程的,习惯了多线程高并发的高大上基数架构之后,猛然回头,发现支持三高的redis是单线程的,这个你能信?“单线程”描述redis固然不准确,我们只能说,redis在访问存储部分的时候是单线程的。学习过tomcat的应该清楚,tomcat跟redis的架构有些类似。tomcat有个专门处理connector的连接器,可以同时处理N个请求,但是connector在提交请求到容器部分的时候,提交的其实是runner,tomcat的自己的线程池会持续处理提交的runner,原创 2020-10-10 19:16:00 · 2032 阅读 · 0 评论 -
《redis》3-redis的数据结构
redis的访问速度为什么那么快,主要是redis使用了hash表来存储索引,索引的key是存储key-value的key,value是指针,指向了真正的key-value实体。hash表的主要特性就是根据key的hash值找到hash表的下标,然后访问下标指向的hash桶,而桶一般是个链表,保存的是hash之后相同下标的数据。hash表有个缺点是,随着数据的增大或者是因为数据特性,造成hash冲突,在相同的hash桶后面又一个长长的数据链表。保存的是hash冲突的key-value数据的实体。我们原创 2020-10-10 17:47:21 · 216 阅读 · 0 评论 -
《redis》2-redis的基础组件
上一节讲到redis为了实现三高做的设计,这一节讲一下redis的基础组件,就像spring学习的时候,我们要分析spring的基础功能和基础组件,从总体上了解一个优秀的框架的基本情况。redis也是一个优秀的架构,在学习redis的最前面,我们也要线懂得redis的基础架构,redis是内存存储系统。存储的数据都是key-value的键值对。key都是String类型,value的数据结构多一些,比如常用string,列表,集合,hash表。redis支持的基本操作,put/get/delete/原创 2020-10-10 16:27:40 · 545 阅读 · 1 评论 -
《redis》1-概述
在基本的开发环境中,总会用到缓存中间件,redis使用的频率比其他的要高很多,所以在使用的同时,理解redis的特性,能够在以后的特定场景中,充分的利用到redis的性能优势。其实在很多的面试中,也会问到redis的特性,比如redis的线程模型,比如redis的集群模式,比如redis的数据结构。而且redis在设计上有很多优秀的特点,在高性能,高可用,高扩展上都能给我们一些启发。所以我在geektime上订阅了蒋德钧老师的redis课程,希望在学习的过程中不断总结,加深理解。大家都知道redis原创 2020-10-10 14:25:04 · 703 阅读 · 0 评论