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

redis_初学笔记

2015-12-24 17:41 543 查看
1.   Redis之介绍

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从这里我们可以知道:

a.   redis是一个数据库,在存储这个功能层面上是和MySQL、Oracle是一样的。

b.   redis是可基于内存的数据库。我们平时用的MySQL之类的数据库,其数据是存储在硬盘上的,查询使用的时候才会读到内存中,即数据的常态是在硬盘上待着。Redis就不一样了,它的数据常态是在内存上待着,只要redis服务器启动,就会把数据库中的全部数据加载到内存上,所以如果数据库中数据量庞大的话,是很消耗内存的,所以redis一般用来做缓存数据库,存储一些比较重要的数据。

c.   redis亦可持久化。我们知道电脑一旦关机,内存中的数据就会清空,如此,那redis不是不能保存数据了吗。不是的,redis中的数据可以持久化,持久化就是不受开关机的影响,数据可以一直存在,像MySQL存储数据一样。向redis中添加的数据会定时的写到硬盘上做持久保存。当下次redis服务器启动的时候,就会把硬盘上保存的数据读到内存中。

d.   Key-Value数据库。学过java的都知道有个集合叫Map,里面保存的是键值对。同样,redis数据库就像是一个大型的map集合,里面存放的也是键值对形式的数据,不同于关系型数据库存放的表结构。

e.   提供多种语言的API。同MySQL一样,可以用多种语言(如java、php)连接redis数据库,然后对数据库进行操作。

总结: redis是一个数据库,在存在的概念上同MySQL等数据库是一样的。不同点是redis的数据保存在内存上,数据形式是键值对。

 

2.   Redis之安装

Redis在Linux下的安装过程,很简单。

a.> tar -zxvf redis-2.8.3.tar.gz     //解压缩tar包

b.> mv redis-2.8.3  redis           //修改文件夹名,根据需要,也可不修改

c.>cd redis   //切换到redis目录

d.>make     //执行make命令

e.> make install   //执行make  install命令

到此为止,redis就安装好了。

 

 

 

 

3.   Redis之配置、启动

a.Redis的配置文件是redis.conf,在redis的安装目录下就可以找到。

打开配置文件(vi  redis.conf),

daemonize yes  #意思是在后台运行;

pidfile "/var/run/redis.pid"

port 6379 #端口

dbfilename "dump.rdb"

dir"/usr/local/redis"

根据需要,还可以对其他配置项进行配置。

b.切换到redis的安装目录,执行如下命令启动redis服务器

./src/redis-server redis.conf  &

通过 ps –ef | grep redis查看进程,出现如下说明redis启动完成

root       3190      1 0 Oct16 ?        00:05:30./src/redis-server *:6379   

 

 

 

 

4.   Redis之使用

a.   使用redis自带的客户端

 [root@Sybase2redis_6379]# ./src/redis-cli

127.0.0.1:6379>

Redis作为数据库,有自己操作数据库的命令。如增加键值对用set命令,redis不适用sql语句操作其数据库。它有自己一整套的操作命令。而客户端就是执行命令的入口

b.使用redis客户端桌面版

Redis的第三方客户端有多款软件,这里选用RedisDesktopManager,可以在网上搜索、下载、安装、使用。图形界面的客户端一般都是安装在window系统上,即这种方式是在window上通过图形界面操作redis数据库

c.使用java程序连接、操作redis数据库,这种方式是用在编程中的。Java连接redis需要jar包(jedis-2.1.0.jar),同java连接MySQL是一样的。详细的代码可以在网上找到

 

5.   Redis之集群

我们知道redis首先是把数据保存在内存中,如果计算机突然宕机或者是其他原因,会导致数据丢失或毁灭,redis相对于其他数据库显得更轻量级,所以不会单独用一台服务器跑redis服务器(太浪费资源),所以与其他数据库相比,redis集群就显得更加需要,所以redis本身也包含有集群的功能,redis可以使用sentinel做集群,而sentinel服务是包含在redis安装包里的。

首先我们需要多个redis数据库,我们这里使用三个,简单的方法就是把安装后的redis文件夹复制2份,这是在Linux环境下这样做的。各redis数据库的差异只是在配置文件上,即redis.conf文件。

我们用三台数据库,一台做主数据库(master),两台做备用数据库(slave,解释为哨兵)。这样当主数据库死掉的时候,可以从备用中选一台接替主数据库的任务。主数据库的配置文件就像上面给出的配置一样,备用数据库的配置文件中多一个属性slaveof,具体的是

slaveof 143.0.9.5 6379   #此处为主数据库的ip和端口,都是以空格分开。

这样子三台数据库就搭建好了,只是他们之间还缺少关联,即主数据库和备用数据库之间还缺少联系、通信,此时就需要sentinel服务器上场了。

我们说过,sentinel服务是包含在redis的安装目录中的,sentinel服务的配置文件和redis的配置文件在同一目录下,文件名是sentinel.conf,我们需要修改此配置文件,加入我们三台数据库实例的信息以及主从关系。我们在sentinel.conf中添加如下内容:

******************************************

port 26379    //sentinel服务的端口

sentinel monitor mymaster x.x.x.x  x 2    //监视主数据库,ip 端口  后面的2是个参数

sentinel down-after-milliseconds mymaster10000

sentinel failover-timeout mymaster 900000

sentinel parallel-syncs mymaster 2

dir "/usr/local/redis"

sentinel config-epoch mymaster 6

sentinel known-slave mymaster 143.0.9.66379  //告诉sentinel服务,备份数据库1 

sentinel known-slave mymaster 143.0.9.76379  //告诉sentinel服务,备份数据库2

sentinel known-sentinel mymaster 143.0.9.626380  //告诉本sentinel服务,还有其他的sentinel服务启动着,这里涉及到sentinel集群

sentinel known-sentinel mymaster 143.0.9.726381  //告诉本sentinel服务,还有其他的sentinel服务启动着

*********************************************

sentinel集群:sentinel的功能是监视redis数据库的状态,维护三台redis数据库之间的主从关系,就像一个大人监视着三台机器的运行状况和主从次序,如果主机器挂掉了,就在备用机器中选一台来接替主机器的位置。但是一个大人监视,如果真的发生状况,比如主机器突然停了,他连个商量的人都没有,那么他做出的判断只是自己一个人的主观意见,就有可能判断错误,所以我们就安排多个大人(比如3个)来同时监视这三台机器,如果主机器停了,这3个大人就可以互相通信、商量,这样做出的判断更加准确。如此就需要多台sentinel服务器了。多台sentinel服务器的任务是一样的,所以它们的配置信息相差不大,只有部分地方不同。另一台sentinel的配置情况:

************************************************

port 26380    //自己的端口

sentinel monitor mymaster 143.0.9.5 6379 2   //监视同一台主数据库

sentinel down-after-milliseconds mymaster10000

sentinel failover-timeout mymaster 900000

sentinel parallel-syncs mymaster 2

dir "/usr/local/redis"   

sentinel config-epoch mymaster 6

sentinel known-slave mymaster 143.0.9.66379  //监视同样的备用数据库

sentinel known-slave mymaster 143.0.9.76379  //监视同样的备用数据库

//告知其他两台sentinel服务器的地址,这里要根据自己所处位置的不同,配置另外两台sentinel服务器的地址

sentinel known-sentinel mymaster 143.0.9.526379  

sentinel known-sentinel mymaster 143.0.9.726381

*********************************************************

启动sentinel服务器,切换到redis的安装目录,用命令

>./src/redis-sentinel sentinel.conf--sentinel & 

启动顺序:先启动主数据库,然后启动所有的sentinel,最后启动从数据库。

此时redis主从服务器搭建已经完成,并且通过sentinel监控,主数据库宕机后自动从备用数据库中选出一台转为主数据库。

上面我们做了那么多工作,包括redis集群和sentinel集群,起码可以解决如下问题:

1.   修改主数据库后,可以将数据同步到备用数据库,这样主从数据库的数据就可以保持一致

2.   主数据库宕机后,可以自动将备用数据库转为主数据库使用,通过sentinel监视来实现

3.   多台sentinel 监视,即使一台sentinel服务挂掉了,还有其他sentinel服务进行监视,总之对主数据库的监视是不可缺少的,否则主从数据库的数据会不一致。

 

到此Ok

*************************************

本人也是初次学习,根据自己学习中的感受,所以本文只是初学redis的一条主线,希望对初次接触redis的朋友有所帮助,起码在宏观上对redis有一个认识,每一块的具体内容或操作,都可以在网上找到。

 

Redis_百度百科:

http://baike.baidu.com/link?url=0thR65XL2tY3Fu7a6Eaz_591ZXyUYd1o5LwkE2-JNyOSdSGJueePPepFCNeIFds5iRgwaMEwkVw7vMjW3hdvvK

redis 学习笔记(4)-HA高可用方案Sentinel配置:
http://www.cnblogs.com/yjmyzz/p/redis-sent aa58
inel-sample.html

Redis中sentinel集群的搭建和Jedis测试 图文教程[三]

http://www.bubuko.com/infodetail-926782.html

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: