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 ...
随机推荐
- 003-JavaString数据类型
String类型可以和8中基本数据类型做运算(byte/short/char/int/long/float/double/boolean),且只能是连接运算 1. 区分 连接符 和 “+” 的区别 c ...
- JS对象 JavaScript 中的所有事物都是对象,如:字符串、数值、数组、函数等,每个对象带有属性和方法。
什么是对象 JavaScript 中的所有事物都是对象,如:字符串.数值.数组.函数等,每个对象带有属性和方法. 对象的属性:反映该对象某些特定的性质的,如:字符串的长度.图像的长宽等: 对象的方法: ...
- SVN Cannot merge into a working copy that has local modifications
我尝试了 主支,分支都提交,但是依然无法合并. 最终,我在服务器上将分支删除,然后主支在拷贝过去. 一,打开服务器资源 二,删除分支 三,拷贝主支到分支 四,刷新分支,就能看到了. 然后在分支项目中, ...
- 最大流拆点——hdu2732,poj3436
一种很普遍的做法就是把一个带有容量的点拆成两个点,一个入点一个出点,链接两个点的边的权值为这个点的容量 hdu3732 #include<cstdio> #include<cstri ...
- linxu(centos)安装php-fpm
编译安装php-fpm 安装前准备 yum -y install gcc automake autoconf libtool make yum -y install gcc gcc-c++ glibc ...
- PostgreSQL 优势,MySQL 数据库自身的特性并不十分丰富,触发器和存储过程的支持较弱,Greenplum、AWS 的 Redshift 等都是基于 PostgreSQL 开发的
PostgreSQL 优势 2016-10-20 21:36 686人阅读 评论(0) 收藏 举报 分类: MYSQL数据库(5) PostgreSQL 是一个自由的对象-关系数据库服务器(数据库 ...
- https://stackoverflow.com/与程序相关的IT技术问答网站
https://stackoverflow.com/ Stack Overflow是一个与程序相关的IT技术问答网站.用户可以在网站免费提交问题,浏览问题,索引相关内容,在创建主页的时候使用简单的HT ...
- Hdu-1452-Happy 2004-费马小定理推除法逆元+同余定理+积性函数
Consider a positive integer X,and let S be the sum of all positive integer divisors of 2004^X. Your ...
- 生成器yield(17-06)
yield 执行以上代码,yield后面可以有返回值 next() 获取 next的使用次数,是你生成器中yield出现的次数 def p(): print("ok") yiel ...
- 9.2 sun.py
import requests from bs4 import BeautifulSoup url = 'http://wz.sun0769.com/index.php/question/reply? ...