一:redis简介:
1:键-值存储 通常被称作是一款数据结构服务器
2:支持的数据类型:字符串、哈希、列表、集合、有序集合等 。对这些数据类型,可以执行原子操作。
3:为了获得优异的性能,redis采用内存中数据集的方式。
4:redis支持数据的持久化,可以每个一段时间将数据转存到磁盘上,或在日志尾部追加一条操作命令。
5:redis支持主从复制,并具有非常快速的非阻塞的首次同步、网络断开自动重连等功能。
6:redis的一些其他功能:简单的事务支持、发布订阅、管道、虚拟内存等。
Redis的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。
分布式:redis支持主从的模式。
原则:Master会将数据同步到slave,而slave不会将数据同步到master。Slave启动时会连接master来同步数据。
这是一个典型的分布式读写分离模型。我们可以利用master来插入数据,slave提供检索服务。这样可以有效减少单个机器的并发访问数量。
读写分离模型
通过增加Slave DB的数量,读的性能可以线性增长。为了避免Master DB的单点故障,集群一般都会采用两台Master
DB做双机热备,所以整个集群的读和写的可用性都非常高。
读写分离架构的缺陷在于,不管是Master还是Slave,每个节点都必须保存完整的数据,如果在数据量很大的情况下,集群的扩展能力还是受限于单个节点的存储能力,而且对于Write-intensive类型的应用,读写分离架构并不适合。
优点:
1. 丰富的数据结构
- String
- list
- set
- hash
- sorted set
2.高速读写,redis使用自己实现的分离器,代码量很短,没有使用lock(MySQL),没有使用CAS(memcached),因此效率非常高。
缺点:
1. 持久化。Redis直接将数据存储到内存中,要将数据保存到磁盘上,Redis可以使用两种方式实现持久化过程。定时快照(snapshot):每隔一段时间将整个数据库写到磁盘上,每次均是写全部数据,代价非常高。第二种方式基于语句追加(aof):只追踪变化的数据,但是追加的log可能过大,同时所有的操作均重新执行一遍,回复速度慢。
2. 耗内存,占用内存过高。