blyang 你长的很好看啊~
Redis从不懂到装懂
发表于: | 分类: DataBase | 评论:3 | 阅读: 695

一、Redis简介


Redis,全称是REmote DIctionary Server,是一个K-V存储系统。它也被称作数据结构服务器,因为它的值可以是String、Map、List、Set等类型。Redis有几个特别的特征:

  1. 支持数据持久化。可以将内存中的数据保存在磁盘中,重启的时候可以再次加载使用,并提供两种持久化模式RDB和AOF
  2. 不仅支持简单的K-V数据类型,还提供List、Set、HashMap、ZSet等数据结构
  3. 支持事务模式
  4. 支持发布订阅
  5. 支持主从模式


二、为什么要使用Redis


随着访问量的提升,采用传统的存储和访问集中在一起的数据库,会出现IO密集访问的问题,导致读取时间变慢。为了提升性能,出现了数据库缓存技术,实现对数据库读取的分离。但是伴随着访问量的继续增加,写入压力增大,缓存技术不能解决写入的问题,于是开始出现分库分表,实现读写分离。数据库从一个集中的,稳定的,强关系的结构,走向一个分化的,容错的,弱关系的结构。数据的存储空间和数据访问空间也得到了分离。Redis就是这样的一个实现了两者分离的一个整体。

Redis最适合所有数据都只在内存中的情景,数据集比较小。尽管Redis也提供数据持久化,但是这种持久化实际上是一个Disk-Back的功能,仅作数据落盘备份,跟传统数据库的持久化是不同的。


三、Redis安装和常见命令


Windows和Linux下的安装教程详见:http://www.runoob.com/redis/redis-install.html,这里不作详述。
至于常用的命令,也请移步菜鸟教程吧。


四、Redis深入学习


关于Redis管道技术:Redis是一种基于CS架构的请求响应协议的TCP服务,通常由客户端向服务端发送一个查询请求,并监听socket返回,同时是在阻塞模式下等待服务端的响应,服务端处理命令之后,将结果返回给客户端。而Redis管道技术则是不采用阻塞模式,可以在服务端未响应时,客户端继续向服务端发送请求,并最终一次性读取所有服务端响应的技术。使用管道技术,减少了阻塞时间,提高了性能。

Redis连接池:数据库连接池是指在初始化时,将一定数量的数据库连接放在一个池子里,连接池有个最小连接数和最大连接数。无论数据连接是否被使用,连接池中至少会有最小连接数的连接。最大连接数限定了这个池子中的最大数据库连接,当应用程序的请求连接数大于最大连接数时,这些请求将会被加入到等待队列中。

Redis消息发布和订阅:有发布者和订阅者两种。当消息通过publish命令发送给发布者时,这个消息就会被发送给当前发布者的订阅者。

Redis持久化:前面已经说到,Redis的持久化和一般的持久化不同,这里的持久化只是用于小数据量的Disk-Backed模式,最常用的场景是服务器断电,数据持久化保存,当再次上电时,再将数据从磁盘读到内存中。Redis的持久化有RDB和AOF两种。其中RDB是指记录一段时间内的操作,一般配置为一段时间内操作超过多少次就做一次持久化操作。 而AOF是可以实现每次写的操作之后都做持久化。Redis的持久化配置是在配置文件中实现的,需要会改conf文件。

Redis主从复制:master-slave模式。Redis主从复制的工作原理是:当slave启动并连接到master之后,它将主动发送一个sync命令,然后,master启动一个后台存盘进程,同时收集所有接收到的用于修改数据集的命令,在后台存盘进程执行完毕之后,master将传送整个数据库文件到slave,以完成一次同步。而slave服务器在接收到数据库文件数据之后将其存盘并加载到内存中。此后,master继续讲所有收集到的修改命令和新的修改命令一次传送给slaves, slave接收到这些命令之后对数据做修改,并最终实现数据同步。如果这个过程中,master和slave之间的连接出现断开的现象,slave可以自动重连master,但是连接之后,将自动进行一个完全同步。Redis的replication有一些优点,比如说同一个master可以同步多个slaves,而且,slave也可以接受其他slave的连接和同步请求,有效分担了master的压力。


五、Redis的使用


Redis的使用过程中,由于走TCP,首先需要驱动包,然后进行连接,再接着就是使用了,不作详述。


六、Redis的不足


Redis的不足主要有两个方面,其一是对集群的支持不足,扩容能力、负载均衡能力较差。 其二是持久化和恢复,会造成间歇性高负载。

评论已关闭

TOP