Redis系列一之《Redis设计与实践》整体观感
笔者别的Redis方面的书没有读过,读完这一本,力荐,作者黄建宏,对Redis不太熟悉的,但是对编程稍微有些基础的,全部
读下来应该无压力。作者的编写和讲解非常详细,覆盖的面基本上都讲到,之前一直都是零零碎碎的阅读别人的帖子,总感觉都是
碎的,连接不起来,作者分了四部分来讲分别为数据结构与对象,单机数据库的实现,多机数据库的实现,独立功能的实现。
读完一遍,整体感觉软件设计并非我想象的那般正常人无法理解或者无法想到的,很多设计是正常逻辑"查漏补缺",类似Hash
结构的扩容,主从复制过程中的缓冲区设计其实也是大家能想到的,从A转移到B,转移需要时间,这个时间又有新的数据进来怎么办,
这个问题一般人也都想得到,并且处理方式也正是用缓冲区存下新进来的数据,并做一个标记,告诉它现在开始转移了,后进来的数
据存在这儿,存到一定时间点后转移到目标区域等等。
在数据结构与对象这部分,先介绍了6种底层数据结构,了解数据结构的读起来不会太艰难,他们分别是简单动态字符串、整数集
合字典,链表,跳跃表,压缩列表,这6种数据结构是Redis大多功能的底层实现。以这6种数据结构为底层实现,Redis创建了自己的对
象系统,这才是我们经常用到的字符串对象,列表对象,哈希对象,集合和有序集合对象,Redis的键值对都是对象,也就是键对象和
值对象,Redis总是以字符串对象作为键对象,这个和java中通常以String作为键的理由相似,多次散列要得到相同的整数结果。
Redis为什么快?因为他是一个内存数据库,既然是内存数据库,那么就要考虑宕机问题,宕机了数据怎么办?存磁盘,Redis支持
持久化,有两种方式,基于键值对保存的RDF方式和基于执行写命令的AOF方式
最精彩的部分属于第三部分,也就是Sentinel,复制和集群这3章,这部分的设计看的让人有点天马行空的感觉,尤其是选举领头羊的
这一部分,简直有点像读小说一样,大家互相发消息,互相收消息,互相判断对方状态,突然这厮不行了,A说,领头羊不行了,你们怎
么看?B说,我这里也没他消息,估计吧?C说,擦,我也没,难道头挂了?》》》过了一会儿,大家意识到,领头羊真的不行了,于是
开始投票选举争取拉票,第一位过半(也可能不是过半,1/3?)的被选为新的领头羊,其他人挨个儿滴血效忠。
上面瞎扯了很多,总体读下来还是有一番波澜的,高潮部分,就是第三部分,Redis的命令很多,但是分类比较清晰,上手也比较容
易,目前集成在java项目中的两种方式:Jedis和Spring集成的RedisTemplate.后面有时间我会继续出系列来些干货,排版没花时间,有缘
人见~~
Redis系列一之《Redis设计与实践》整体观感的更多相关文章
- Redis系列(四):Redis的复制机制(主从复制)
本篇博客是Redis系列的第4篇,主要讲解下Redis的主从复制机制. 本系列的前3篇可以点击以下链接查看: Redis系列(一):Redis简介及环境安装 Redis系列(二):Redis的5种数据 ...
- Redis系列(三):Redis的持久化机制(RDB、AOF)
本篇博客是Redis系列的第3篇,主要讲解下Redis的2种持久化机制:RDB和AOF. 本系列的前2篇可以点击以下链接查看: Redis系列(一):Redis简介及环境安装. Redis系列(二): ...
- Redis系列(五):Redis的过期键删除策略
本篇博客是Redis系列的第5篇,主要讲解下Redis的过期键删除策略. 本系列的前4篇可以点击以下链接查看: Redis系列(一):Redis简介及环境安装 Redis系列(二):Redis的5种数 ...
- Redis系列(一)StackExchange.Redis的使用
Redis系列(一)StackExchange.Redis的使用 一.DLL安装 用NuGet搜索StackExchange.Redis,然后下载就可以. ConnectionMultiplexer对 ...
- Redis系列(二):Redis的5种数据结构及其常用命令
上一篇博客,我们讲解了什么是Redis以及在Windows和Linux环境下安装Redis的方法, 没看过的同学可以点击以下链接查看: Redis系列(一):Redis简介及环境安装. 本篇博客我们来 ...
- Java Redis系列2 (redis的安装与使用+redis持久化的实现))
Java Redis系列2 (redis的安装与使用+redis持久化的实现) 什么是Redis? Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库,官方提供测试数据,50 ...
- Redis系列(一):Redis简介及环境安装
提到Redis,大家肯定都听过,并且应该都在项目中或多或少的使用过,也许你觉得Redis用起来挺简单的呀,但如果有人问你下面的几个问题(比如同事或者面试官),你能回答的上来吗? 什么是Redis? R ...
- Redis系列-远程连接redis并给redis加锁
假设两台redis服务器,ip分别为:192.168.1.101和192.168.1.103,如何在101上通过redis-cli访问103上的redis呢?在远程连接103之前,先讲下redis-c ...
- 组件-------(一)redis系列--安装部署redis+实现redis分布式缓存 java+Spring+redis
目的:解决单机session不能共享问题,插入查询数据库时间效率问题,实现分布式缓存. 准备材料:Redis 下载链接 http://pan.baidu.com/s/1dEGTxvV 相关jar包如果 ...
- Redis系列一(Redis环境的搭建)
最近工作中需要Redis缓存,由于也是第一次弄,在网上找了很多资料,在此记录一下. 安装Redis 我使用的系统是CentOS 6.6,安装步骤如下: 1.下载源码,解压后编译源码.(如果没有 wge ...
随机推荐
- java面试官如何面试别人
java面试官如何面试别人(一) j ...
- wish - 简单的窗口式(windowing) shell
总览 wish [filename] [arg] [arg ...] 选项 -colormap new 指定窗口使用一个新的私有的调色板(colormap)而不使用给屏幕的缺省的调色板. -displ ...
- 幂等 zuul的Filter实现
通过zuul的过滤器 filter实现 //app 幂等过滤 @SuppressWarnings("all") @Order(Ordered.HIGHEST_PRECEDENCE) ...
- 解决Keep-Alive 和 Close 不能使用此属性设置
http://www.hejingzong.cn/blog/viewblog_86.aspx Keep-Alive 和 Close 不能使用此属性设置 public static void SetHe ...
- sql(10) sum
SUM() 函数SUM 函数返回数值列的总数(总额).SQL SUM() 语法SELECT SUM(column_name) FROM table_name新建表 StudentSS_id Grade ...
- yii2中使用定义在 params.php文件中的配置
yii2 使用 配置文件中在 params 的配置, 可以用 Yii::$app->params['key1']形式访问 参考 yii can't access Yii::$app->pa ...
- JAVA数据结构之哈希表
Hash表简介: Hash表是基于数组的,优点是提供快速的插入和查找的操作,编程实现相对容易,缺点是一旦创建就不好扩展,当hash表被基本填满的时候,性能下降非常严重(发生聚集引起的性能的下降),而且 ...
- js基础(条件语句 循环语句)
条件语句 if语句块的语法形式如下: //只有两种情况下if(条件){要执行的语句块;}else{要执行的语句块;} //多种情况下if(条件){要执行的语句块;}else if(条件){要执行的语句 ...
- 混合云存储组合拳:基于云存储网关与混合云备份的OSS数据备份方案
前言 阿里云对象存储(OSS)用户众多.很多用户因为业务或者合规性需求,需要对OSS内的数据做备份,无论是线上备份,还是线下备份.用户可以选择使用OSS的开放API,按照业务需求,做数据的备份,也可以 ...
- iOS之SceneKit.h文件简介
1.SceneKit简介 SceneKit(SK)是WWDC12推出的OS X平台的Cocos 3D渲染引擎框架.支持粒子效果,物理模拟,脚本事件,多程渲染,支持iOS平台.SceneKit整合了Co ...