主要是工做中用到redis,有的时候会由于某些点去重复的查询,索性对redis进行一次梳理,大体会从如下几方面去梳理:redis的简介;redis分布式锁;缓存穿透、缓存雪崩、缓存击穿下的解决措施……
Redis是远程内存数据库、非关系型数据库(non-relational database),能够存储键(key)与5种不一样类 型的值(value)之间的映射(mapping),能够将存储在内存的键值对数据持久化到硬盘,可使用复制特性来扩展读性能,还可使用客户端分片来扩展写性能。html
关键点:非关系型数据库、五种不一样类型的值、持久化到硬盘的方式、复制特性(主从复制)、客户端分片mysql
定义:redis
优势sql
定义:数据库
分类:缓存
面向高性能并发读写的key-value数据库服务器
面向海量数据访问的文档数据库数据结构
面向可扩展性的分布式数据库多线程
优势并发
数据类型 | 值类型 | 备注 |
---|---|---|
String | 字符串、整数或者浮点数 | / |
List | 列表 | 1. 能够储存多个相同的字符串<br/>2. 有序 |
Set | 无序集合 | 1. 经过使用散列表来保证本身存储的每一个字符串都是各不相同的<br/>2. 无序 |
hash | 散列 | / |
zset | 有序集合 | / |
Redis命令参考:详细连接
选项 | 同步频率 | 备注 |
---|---|---|
always | 每一个写命令都同步 | 会影响服务器性能 |
everysec | 每秒同步一次 | 比较好,能够保证系统奔溃时只会丢失一秒左右的数据 |
no | 让操做系统来决定什么时候同步 | 意义不大,会增长系统崩溃时的数据量 |
单个Redis服务器会发生单点故障,而且一台服务器须要处理全部的请求负载,压力较大
当启动一个Slave进程后,它会向Master发送一个SYNC Command,请求同步链接。不管是第一次链接仍是从新链接,Master都会启动一个后台进程,将数据快照保存到数据文件中,同时Master会记录全部修改数据的命令并缓存在数据文件中。后台进程完成缓存操做后,Master就发送数据文件给Slave,Slave端将数据文件保存到硬盘上,而后将其在加载到内存中,接着Master就会全部修改数据的操做,将其发送给Slave端。若Slave出现故障致使宕机,恢复正常后会自动从新链接,Master收到Slave的链接后,将其完整的数据文件发送给Slave,若是Mater同时收到多个Slave发来的同步请求,Master只会在后台启动一个进程保存数据文件,而后将其发送给全部的Slave,确保Slave正常
名称 | 类型 | 数据库存储选项 | 查询类型 | 附加功能 |
---|---|---|---|---|
Redis | 使用内存存储(in-memory)的非关系数据库 | 字符串、列表、集合、散列表、有序集合 | 每种数据类型都有本身的专属命令,另外还有批量操做(bulk operation)和不彻底(partial)的事务支持 | 发布与订阅,主从复制(master/slave replication),持久化,脚本(存储过程,stored procedure) |
memcached | 使用内存存储的键值缓存 | 键值之间的映射 | 建立命令、读取命令、更新命令、删除命令以及其余几个命令 | 为提高性能而设的多线程服务器 |
MySQL | 关系数据库 | 每一个数据库能够包含多个表,每一个表能够包含多个行;能够处理多个表的视图(view);支持空间(spatial)和第三方扩展 | SELECT、 INSERT、 UPDATE、 DELETE、函数、存储过程 | 支持ACID性质(须要使用InnoDB),主从复制和主主复制 (master/master replication) |
PostgreSQL | 关系数据库 | 每一个数据库能够包含多个表,每一个表能够包含多个行;能够处理多个表的视图;支持空间和第三方扩展;支持可定制类型 | SELECT、 INSERT、 UPDATE、 DELETE、内置函数、自定义的存储过程 | 支持ACID性质,主从复制,由第三方支持的多主复制(multi-master replication) |
MongoDB | 使用硬盘存储(on-disk)的非关系文档存储 | 每一个数据库能够包含多个表,每一个表能够包含多个无schema(schema-less)的BSON文档 | 建立命令、读取命令、更新命令、删除命令、条件查询命令等 | 支持map-reduce操做,主从复制,分片,空间索引(spatial index) |
读写性能优异
支持丰富数据类型
支持事务
丰富的特性