1.什么是Redis?
一款高性能的key-value缓存数据库。
优势:一款基于内存的key-value数据库,整个数据库都在内存中运行操作,每秒可以支持10W左右的读写操作,而且支持数据持久化,还可以支持多种数据结构。
缺点:容量受到物理内存的限制。不能做海量数据的高性能读写。适合较少数据的高性能读写。
2.Redis 和memcache 的区别:
第一:数据类型:Redis支持五种数据类型。String ,list,set,sorted set ,hash。
String 的操作: get set ,keys *...
list:Lpush, Lpop .
hash : hset key field value. hget
set: sadd , spop
sorted set( zset): zadd
第二:Redis支持持久化。memcache 不支持持久化,一旦断电,数据丢失。
第三:Redis 速度快于memcache.
3.Redis 持久化方式
1.快照方式
默认的持久化方式,Redis默认将数据快照的二进制文件写入磁盘中,文件名叫做dumps.rdb。
可以设置N秒操作几次后快照持久化一次,或者调用save命令。
原理:1.redis fork一个子进程 2.子进程将数据写入到临时rdb 文件中 3 写完后用新文件代替老文件 4 copy and write
缺点:当在两次快照执行期间丢失数据,将不会被记录,这也是快照的缺点。
2.AOF 方式(append only)
记录指令日志的方式。,将“操作 + 数据”以格式化指令的方式追加到操作日志文件的尾部。保存在硬盘上
优势:1.灵活设置持久化时间,若将持久化时间间隔为1s,那么最多丢失1s的数据。
2.支持日志重写和修复。
缺点:文件要比RDB大许多,恢复速度慢。
AOF默认关闭,开启方法,修改配置文件reds.conf:appendonly yes
Redis是单线程的
redis利用队列技术将并发访问变为串行访问,消除了传统数据库串行控制的开销
(7)分布式
redis支持主从的模式。原则:Master会将数据同步到slave,而slave不会将数据同步到master。Slave启动时会连接master来同步数据。
这是一个典型的分布式读写分离模型。我们可以利用master来插入数据,slave提供检索服务。这样可以有效减少单个机器的并发访问数量
(8)读写分离模型
通过增加Slave DB的数量,读的性能可以线性增长。为了避免Master DB的单点故障,集群一般都会采用两台Master DB做双机热备,所以整个集群的读和写的可用性都非常高。
读写分离架构的缺陷在于,不管是Master还是Slave,每个节点都必须保存完整的数据,如果在数据量很大的情况下,集群的扩展能力还是受限于单个节点的存储能力,而且对于Write-intensive类型的应用,读写分离架构并不适合。
(9)数据分片模型
为了解决读写分离模型的缺陷,可以将数据分片模型应用进来。
可以将每个节点看成都是独立的master,然后通过业务实现数据分片。
结合上面两种模型,可以将每个master设计成由一个master和多个slave组成的模型。