redix_1

Redis简介

  1. 是以key-value形式存储,和传统的数据库不一样,不一定遵循传统数据库的一些基本需求(非关系型的、分布式的、开源的、水平可扩展的)

优点###

  • 对数据高并发读写
  • 对海量数据的高效率存储和访问
  • 对数据的可扩展性和高可用性

缺点###

  • redix(ACID处理非常简单)
  • 无法做到太复杂的关系数据库模型

  1. redix是把数据放到内存中进行读写,比如mysql/oracle是把数据放到硬盘中进行读写.
  2. 显然内存读写操作高于硬盘读写操作

  • 扩展性: 比如说有三台服务器如下图


比如我的主服务器上有一个硬盘存放着业务数据,有几个G或者更大,那么从服务器一定是和主服务器一样的 ,也就是说三个节点下的数据是相同的(节点:一台机器称为一个节点)

如果一个用户在执行读的情况下去并发着访问三台机器中的一台(这都是可以的)

那么可扩展性是:比如说,主服务器的数据不断增加,没有空间了怎么办??

扩展性分两种:

水平扩展因为三台机器称为一个集群:往集群里新加一台机器

垂直扩展 比如说主服务器就1G的固态硬盘,在本机器上在加1G


  • 高可用性:

比如说主节点挂掉(由于网络原因或者硬件故障),导致不可用,那么对应着下面的从节点也会导致不可用,也就是说我的主节点挂掉,我整个的redix服务将会挂掉。

增加主节点,如果主节点挂掉,我们可以切换一台主节点,那么主节点下面另外的从节点也会换到另外一个主节点(如上图),如果后期修复好了,还可以加入继续使用,这就是高可用性

  • 可靠性: 也就是数据不会丢失,因为redix是把数据放到内存当中的,当服务器断电或者重启,那么内存里的数据一定会丢失,那么唯一一个办法就是把数据同步到到这台机器的硬盘上,才能保证数据不丢失。

Redix是以key-value store存储的,data structrue service 数据结构服务器。键可以包含:String字符串,哈希,(list)链表,set(集合)zset(有序集合 )这些数据集合都支持push/pop、add/remove及取交集和并集以及更丰富的操作,redix支持各种不同的方式排序,为了保证效率,数据都是缓存在内存中,它也可以周期性的把更新的数据写入磁盘或者把修改操作写入追加到文件

其实Redix做持久化就2种, 一种是RDB 可以周期性的把内存的数据同步到这台机器所在的硬盘上,比如说没每隔5秒钟,还有一种AOF相当于oracle的undo,把持久化的操作写到日志里。(实际工作中都会使用AOF)


上一篇:对象锁的同步和异步


下一篇:Spring+SpringMVC+MyBatis+Maven整合