您的位置:首页 > 数据库 > Redis

Redis从不懂到装懂

2016-06-13 11:28 567 查看
一、Redis简介

Redis,全称是REmote DIctionary Server,是一个K-V存储系统。

它也被称作数据结构服务器,因为它的值可以是String、Map、List、Set等类型。

Redis有几个特别的特征:

1)支持数据持久化。可以将内存中的数据保存在磁盘中,重启的时候可以再次加载使用

2)不仅支持简单的K-V数据类型,还提供List、Set、HashMap等数据结构

3)支持数据备份。即master-slave模式的数据备份

需要注意的是,Redis虽然可以持久化到硬盘,但正常是运行在内存中的,所以在对不同数据进行高速读写时,需要衡量内存大小,读写的数据量不能超过内存。

二、为什么要使用Redis

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

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

三、Redis常见命令

Windows和Linux下的安装教程详见:http://www.runoob.com/redis/redis-install.html,这里不作详述。只简单记录几个常见的命令,自己留个印象罢了。

启动服务器

windows机器上,从命令窗口到指定目录(文件解压的目录)之后,直接使用redis-server命令即可启动Redis服务器

linux机器上,到文件解压的目录之后,要进入src文件夹下,然后使用 ./redis-server 启动Redis服务器

直接使用redis-server 命令启动的是默认配置,如果需要指定配置文件,需要使用 redis-server redis.conf 命令,其中redis.conf是一个默认配置文件,可以根据需要使用自己的配置文件。启动示例如下:



数据类型

字符串:set key value

字符串是Redis最基本的数据类型,一个key对应一个value,Redis的string中可以包含任何数据,比如JPG图片或者序列化的对象。调用时使用get key。如下图例子:



哈希Hash:hmset name key1 value1 key2 value2 ......
这是一个键值对集合,适合存储对象



列表List:lpush listName value

redis列表是简单的字符串列表,按照插入的顺序排序。取出时使用 lrange 命令



无序集合set:sadd key member

集合,无序集,添加某元素时,如果集合中没有这个元素,则添加成功返回1,当集合中有这个元素时,添加失败返回0



有序集合zset:zadd key score member

zset也是一个string类型的集合,并且不允许重复,不同的是,每个元素都会关联一个double类型的分数,Redis通过分数来为集合中的成员从小到大排序,成员是唯一的,但是分数是可以重复的。



四、Redis深入学习

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

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

Redis消息发布和订阅:有发布者和订阅者两种。当消息通过publish命令发送给发布者时,这个消息就会被发送给当前发布者的订阅者。这个过程可以概括为三个步骤。

step 1: 一个客户端订阅一个消息对象 比如说是“broadcast”



step 2:另一个客户端发布一个消息对象,也是broadcast



step 3:此时可以看到订阅者已经收到了发布者发布的消息了,如下:



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的压力。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: