Jesse' Notes

我干了什么 究竟拿时间换了什么

(四)Redis高可用性的实现

《Redis设计与实现》学习笔记

参考:Redis的设计与实现 [TOC] Redis的从服务器挂了,一般有多个从服务器,所有影响不大。但是一旦主服务器挂了,怎么办? Redis提供了哨兵(Sentinal)机制供我们解决上面的情况。如果主服务器挂了,哨兵机制能够察觉出,然后将某个从服务器升级为主服务器,等到旧的主服务器(挂掉的那个)重连上来,会将它(挂掉的主服务器)变成从服务器。 这个过程叫做主备切换(故障...

Optional的正确使用姿势

写出优雅的代码

Optional 中我们真正可依赖的应该是除了 isPresent() 和 get() 的其他方法: 1 2 3 4 5 6 7 public<U> Optional<U> map(Function<? super T, ? extends U> mapper) public T orElse(T other) public T orElseGet(Sup...

(三)Redis主从复制的实现

《Redis设计与实现》学习笔记

参考:Redis的设计与实现 [TOC] 一、主从架构 1.1 为什么要主从 Redis的内存是有限的。 单台Redis支持的并发量也是有限的。 实现高可用性 Redis作者Salvatore Sanfilippo已将Master/Slave架构改名为Master/Replica 1.2 主从特点 主服务器负责接收写请求 从服务器负责接收读请求 从服...

(二)Redis单机数据库的实现

《Redis设计与实现》学习笔记

参考:Redis的设计与实现 Redis官方文档 一、Redis服务器中的数据库 Redis服务器中也有数据库这么一个概念。如果不指定具体的数量,默认会有16个数据库。 1 select 15 这说明,数据库与数据库之间的数据是隔离的。 1.1 Redis数据库的原理 Redis服务器用redisServer结构体来表示,其中redisDb是一个数组,用来保存所有的数据库,db...

(一)Redis数据结构的设计

《Redis设计与实现》学习笔记

参考:Redis的设计与实现 [TOC] Redis的数据结构 Redis 命令参考:http://doc.redisfans.com/ try Redis(不用安装Redis即可体验Redis命令):http://try.redis.io/ 1 首先 1 "Redis is written in ANSI C"-->Redis由C语言编写 首先还是得声明一下,Redis...

InnoDB为什么高并发

一、并发控制 为啥要进行并发控制? 并发的任务对同一个临界资源进行操作,如果不采取措施,可能导致不一致,故必须进行并发控制(Concurrency Control)。 技术上,通常如何进行并发控制? 通过并发控制保证数据一致性的常见手段有: 锁(Locking) 数据多版本(Multi Versioning) 二、锁 如何使用普通锁保证一致性? 普通锁,被使用最多: ...

Redis笔记之数据安全与性能保障

一、持久化 Redis拥有两种不同形式的持久化方法: 第一种快照持久化。 快照就是在某个时间点上获得存储在内存里面的数据的副本。 1 2 3 4 5 6 向Redis发送BGSAVE命令,Redis会调用fork来创建一个子进程,然后子进程负责将快照写入硬盘,而父进程则继续处理命令请求。 还可以配置save选项,例如SAVE 60 10000 即60s内完成10000次操作即可触发B...

Innodb和myisam几个知识点

MyISAM和InnoDB date: 2017-06-26 16:28:09 title: MyISAM和InnoDB几个知识点 categories: 数据库 tags: InnoDB MyISAM 说说MySQL两个最常用的存储引擎,MyISAM和InnoDB。 一、关于count(*) 1 MyISAM会直接存储总行数,InnoDB则不会...

Redis笔记之数据类型

Redis的数据结构 Redis 命令参考:http://doc.redisfans.com/ try Redis(不用安装Redis即可体验Redis命令):http://try.redis.io/ 1 首先 1 "Redis is written in ANSI C"-->Redis由C语言编写 首先还是得声明一下,Redis的存储是以key-value的形式的。Re...

数据库的拆分

一、缘起 当数据库的数据量非常大时,水平切分和垂直拆分是两种常见的降低数据库大小,提升性能的方法。假设有用户表: 1 2 3 4 5 6 7 8 9 10 user( uid bigint, name varchar(16), pass varchar(16), age int, sex tinyint, flag tinyint, sign varchar(64), intro var...