笔者别的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设计与实践》整体观感的更多相关文章

  1. Redis系列(四):Redis的复制机制(主从复制)

    本篇博客是Redis系列的第4篇,主要讲解下Redis的主从复制机制. 本系列的前3篇可以点击以下链接查看: Redis系列(一):Redis简介及环境安装 Redis系列(二):Redis的5种数据 ...

  2. Redis系列(三):Redis的持久化机制(RDB、AOF)

    本篇博客是Redis系列的第3篇,主要讲解下Redis的2种持久化机制:RDB和AOF. 本系列的前2篇可以点击以下链接查看: Redis系列(一):Redis简介及环境安装. Redis系列(二): ...

  3. Redis系列(五):Redis的过期键删除策略

    本篇博客是Redis系列的第5篇,主要讲解下Redis的过期键删除策略. 本系列的前4篇可以点击以下链接查看: Redis系列(一):Redis简介及环境安装 Redis系列(二):Redis的5种数 ...

  4. Redis系列(一)StackExchange.Redis的使用

    Redis系列(一)StackExchange.Redis的使用 一.DLL安装 用NuGet搜索StackExchange.Redis,然后下载就可以. ConnectionMultiplexer对 ...

  5. Redis系列(二):Redis的5种数据结构及其常用命令

    上一篇博客,我们讲解了什么是Redis以及在Windows和Linux环境下安装Redis的方法, 没看过的同学可以点击以下链接查看: Redis系列(一):Redis简介及环境安装. 本篇博客我们来 ...

  6. Java Redis系列2 (redis的安装与使用+redis持久化的实现))

    Java Redis系列2 (redis的安装与使用+redis持久化的实现) 什么是Redis? Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库,官方提供测试数据,50 ...

  7. Redis系列(一):Redis简介及环境安装

    提到Redis,大家肯定都听过,并且应该都在项目中或多或少的使用过,也许你觉得Redis用起来挺简单的呀,但如果有人问你下面的几个问题(比如同事或者面试官),你能回答的上来吗? 什么是Redis? R ...

  8. Redis系列-远程连接redis并给redis加锁

    假设两台redis服务器,ip分别为:192.168.1.101和192.168.1.103,如何在101上通过redis-cli访问103上的redis呢?在远程连接103之前,先讲下redis-c ...

  9. 组件-------(一)redis系列--安装部署redis+实现redis分布式缓存 java+Spring+redis

    目的:解决单机session不能共享问题,插入查询数据库时间效率问题,实现分布式缓存. 准备材料:Redis 下载链接 http://pan.baidu.com/s/1dEGTxvV 相关jar包如果 ...

  10. Redis系列一(Redis环境的搭建)

    最近工作中需要Redis缓存,由于也是第一次弄,在网上找了很多资料,在此记录一下. 安装Redis 我使用的系统是CentOS 6.6,安装步骤如下: 1.下载源码,解压后编译源码.(如果没有 wge ...

随机推荐

  1. 常用指令linux总结

    linux的基础操作命令: 常见命令: man 查看帮助文档 用法:man + 命令 help 查看指定命令的用法 用法: 命令 --help(有空格) tab linux下命令与文件名补全 用法:在 ...

  2. Go, JS和Websocket

    JS中建立Websocket连接 var ws = new WebSocket("ws://hostname/path", ["protocol1", &quo ...

  3. VisualGDB使用随笔

    VisualGDB是目前我遇到的在Windows下开发Linux应用程序最好用的软件,它不仅可以直接在VS环境中编译Linux程序,还可以直接对Linux程序进行调试,极大的方便了Windows程序员 ...

  4. 关于webpack一些路径

    好多新手对webpack中的路径一直感到迷茫,其实再学习webpack之前都应该去了解下nodejs的内容, 以为webpack就是个nodejs项目,所以里面涉及到的路径都是nodejs里面的写法 ...

  5. static,final关键字,Object类的tostring方法,equals方法,hashCode方法

    1)static关键字 static可以修饰:属性.方法.代码块 静态方法不能访问非静态 属性 或 方法 属性(变量): 成员变量: 静态变量: 通过 类名.静态变量来访问 通过 对象名.静态变量来访 ...

  6. sql语句之条件,分页,排序

    sql语句之条件,分页,排序

  7. Django项目:堡垒机(Linux服务器主机管理系统)--03--03堡垒机在Linux系统里记录会话日志02/02

    #main.py #本文件写所有的连接交互动作程序 # ————————————————03堡垒机在Linux系统里记录会话日志 开始———————————————— from Fortress im ...

  8. JS程序的基本语法

    JS程序的基本语法 JS是区分大小写的.如:Name和name是两个变量 JS中每一条语句,一般以英文下的分号(;)结束.这个分号不是必须的.为了向PHP兼容,最好加上分号. 运算符和变量,以及操作之 ...

  9. springboot-配置多数据源(AOP实现)(HikariCP + MybatisPlus + mysql + SqlServer)

    场景: springboot项目,默认使用HikariCP连接池 + MybatisPlus持久层框架 + mysql数据库等一套流程,现需求需去第三方sqlserver数据库拉取数据,直连数据库,不 ...

  10. pip的使用方法简介

    pip是Python包管理工具,它提供了对Python包的查找.下载.安装.卸载的功能 目前如果你在 python.org 下载最新版本的安装包,则是已经自带了该工具. 以下是pip常用命令 显示版本 ...