最近工作用到了关于redis的一些东西,自己也上网查阅了一些资料,发现很多大牛总结都很好,自己也要把学习的点点滴滴记录下来。
主要看了一些redis的用法,包括redis安装、redis单例、redis集群、redis切片的简单理解。其实使用起来非常方便,也非常简单。对于一些比较深奥的东西还没研究到,只是一些简单的使用方法。
下面就进入正题吧:
一、单机部署
首先什么是redis呢?redis应该是一个类似于key-value的存储系统,当然他也支持几种数据结构,如:String、list、set、zset、hash。一般在工作过程中会作为数据缓存,当然redis也是支持持久化的。
由于是在mac上安装和学习的,所以这边只讲关于mac上的一些安装部署等,基本跟linux环境下类似。
关于redis,在学习之前需要安装三个东西:1、ruby 2、rubygem 3、redis。其中ruby和rubygem暂且理解为插件吧,需要安装的东西将在部署的过程中进行说明。
一、首先下载redis,网上也有多的例子,这里下载的是redis3.0.2版本, 下载完成后本地解压缩,进入解压目录下src目录输入make命令进行redis安装。注意 、当进行到这边的时候遇到一个小问题,报了一个找不到make命令的错误,最后的解决方法是在终端输入命令xcode-select --install进行安装命令行插件即可,当然网上也有好多解决方法是先下载一个xcode软件然后在里面进行操作,这种方法暂时没尝试过,相比较而言xcode-select --install应该简单一点吧。
安装完成redis之后,尝试启动服务,进入src目录输入:./redis-server命令启动redis,启动后如下图。
这样就启动完成了。下面就是连接redis,好吧,我们暂时先重新打开一个终端,然后再次进入src目录下面,是不是感到比较麻烦,一会下面会慢慢讲解,可以后台启动redis。在src目录下面输入./redis.cli连接进入redis如下图。
好了,到现在为止,redis的安装,启动还有连接就讲完了。这边我觉得要具体说一下关于redis启动和连接的两个命令,这两个命令其实是带参数的,在redis启动的时候如果只输入./redis-server命令会默认加载redis安装目录下的redis.config配置文件。这个配置文件的内容我剔除掉了一些,只给大家留了一些常用的配置,如下图。
一个参数一个参数的说明:
daemonize:这个就是设置redis后台启动的配置,如果为false的情况,就会出现上述启动redis之后不能继续输入命令的情况,得重新开启一个终端才可以。当然这边我配置的是yes,变成了后台运行。
port:redis的端口号,供客户端连接,默认一般是6379。
cluster-enabled:设置为ture表示reids集群启用。
cluster-config-file:redis集群配置文件信息
cluster-node-timeout:连接超时时间。
好叻,我们来测试一下刚刚启动的redis,向里面放入几个值然后再取出。
上面是redis默认情况下的启动,现在我需要修改一下redis的端口号,默认是6379,端口号的配置是在redis.conf文件里面的,启动的时候如果redis.server后面不带参数默认是安装根目录下的redis.conf配置文件,现在根目录下面复制一份redis.conf到src下面打开修改一下端口号信息
将端口号改成了6378,并且将daemonize改为yes,这时启动redis命令就要加参数了,应该是./redis.server ./redis.conf(刚刚修改的redis配置文件)。
可以看到redis启动没有显示启动信息,这就是把daemonize配置为yes,redis在后台启动的效果。连接redis也需要通过端口号进行连接,命令为:
2、redis主从复制:
先了解一下redis主从的一些特性:
1、redis 使用异步复制。从 redis 2.8 开始,slave 也会周期性的告诉 master 现在的数据量。
2、一个 master 可以拥有多个 slave,且与slave同步数据是异步进行的。
3、slave 可以接收来自其他 slave 的连接。
好了,我们还是直接进入实验吧。
一、redis主从复制
首先开启三个实例,命令分别为:
redis-server --port 1001 --daemonize yes
redis-server --port 1002 --daemonize yes
redis-server --port 1003 --daemonize yes
这里解释一下,redis启动的时候端口号默认为6379,我们可以通过修改配置文件来修改启动实例的端口号和后台启动配置。另外一种方法就是上面这种命令方式,在命令中跟参数--port 1001表示启动端口为1001,--daemonize yes表示默认后台启动。好了,现在启动完了三个端口号分别为1001、1002、1003的实例,输入ps aux|grep redis可以看到当前的redis进程如图:
既然是主从复制,那么我们要建立主从关系,这里准备将9002和9003设置为9001的从属redis,进入连接进入9002和9003,输入slaveof 127.0.0.1 1001即可:
设置完主从配置,我们来试验一下,首先看下三台机器上有没有“test01”这条数据,
三个实例中都是没有数据的,现在我们向主redis放入值,
再次在10001、02、03上看是否已经有值。
可以看到在9001端口上放的值已经同步到9002和9003上了。另外要追加说明一点的是,redis中slave只能读不去写入值。