redis单机版,哨兵,集群的一些总结

首先需要了解的是
Redis c 语言开发的。
安装redis 需要c 语言的编译环境。如果没有gcc 需要在线安装。yum install gcc-c++
一、单机版
1.下载redis的linux版本文件并上传服务器并且解压
这里我上传到了服务器/data/file/目录下的位置
解压命令是:tar -zxvf redis-3.0.0.tar.gz
2.进入redis-3.0.0的目录进行编译
cd redis-3.0.0
make
3.进行安装可以指定安装路径
make install PREFIX=/usr/local/redis
我这里安装到/usr/local/redis 的路径下了
可以进入该路径下查看,会发现有一个bin的文件夹(该文件夹的名称可以重命名),进入该文件夹我们可以看到(这里的redis.conf是从/data/file/redis-3.0.0中复制过来的)
这里重点是redis.conf文件的配置类容
1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程
     daemonize yes
2. 当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定
     pidfile /var/run/redis.pid
3. 指定Redis监听端口,默认端口为6379,作者在自己的一篇博文中解释了为什么选用6379作为默认端口,因为6379在手机按键上MERZ对应的号码,而MERZ取自意大利歌女Alessia Merz的名字
     port 6379
4. 绑定的主机地址
     bind 127.0.0.1   这个Ip要设置成你服务器的Ip
5. 设置当本机为slave服务时,设置master服务的IP地址及端口,在Redis启动时,它会自动从master进行数据同步
     slaveof <masterip> <masterport>
6. 当master服务设置了密码保护时,slav服务连接master的密码
     masterauth <master-password>

启动单机版的redis并且在后台执行只需要设置daemonize yes之后执行命令:
./redis-server redis.conf
通过客户端进入redis命令:
./redis-cli -h 127.0.0.1 -p 6379
-h :连接的服务器的地址
-p :服务的端口号
关闭redis的命令:
./redis-cli shutdown
到这里单机版的redis就安装完成了,外网如果要访问还需要关闭防火墙。

二、哨兵版
1. 首先哨兵模式是适用于拥有redis主从服务器的情况下的,
进入目录
cd /usr/local/redis
将刚刚的bin文件夹重命名
mv bin master
复制出从服务器
cp -r master slave
这时候目录下就有两台redis服务器了 ,当然这里也可以复制出多台从服务器。
然后需要做的就是进入各服务器目录下修改redis.conf文件类容.
2.修改moster目录下的redis.conf文件 的pidfile属性值 与 port 我这里端口号修改为6380
主服务器还可以设置从服务器只读的权限 redis.conf中设置 slave-read-only yes 即可。
3.修改slave目录下的redis.conf文件的pidfile ,port为6381,以及 slaveof 127.0.0.1 6380 (这里的ip地址和端口号对应着主服务器可以配置其他服务器的对应的值,我这里是因为安装在同一台服务器的原因)
如果主服务器设置了密码可以通过 masterauth <master-password> 进行修改

到这里主从的服务器已经配置好了。可以分别通过 ./redis-server redis.conf 进行启动
通过客户端 ./redis-cli -h 127.0.0.1 -p 6380进入 然后info命令查看服务器的角色
127.0.0.1:6380> info
...
# Replication
role:master
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
...

./redis-cli -h 127.0.0.1 -p 6381 命令info
...
role:slave
master_host:127.0.0.1
master_port:6380
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_repl_offset:71
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
...
但是这里只是会起到一个数据备份的作用,而想要主服务器挂掉了从服务器顶上去的功能,还得需要配置哨兵,配置哨兵是通过配置sentinel.conf 文件,配置多个sentinel.conf文件就相当于配置了多个哨兵。
sentinel.conf文件在redis的解压目录下面。我这里将它复制到/usr/local/redis/目录下,修改类容
配置端口号 port 26379
配置主服务器ip和端口号 sentinel monitor mymaster 127.0 . 0.1 6380 2 ( 我们这里加上权值为2,是用来计算我们需要将哪一台服务器升级升主服务器
配置后台启动 daemonize yes
配置日志文件位置 logfile /usr/local/redis/log/sentinel_log.log
启动命令:进入一个服务器的目录下使用 ./redis-server ../sentinel.conf --sentinel
java连接哨兵模式的redis 只需要连接哨兵的ip和端口就可以了。


二、集群版
Redis 集群中至少需要有三个节点。要保证集群的高可用,需要每个节点有一个备份机。
Redis 集群至少需要6 台服务器。
这里搭建一个伪分布式。使用一台虚拟机运行6 redis 实例。修改redis 的端口号7001-7006

接着上边的写,首先复制redis服务器 cp -r /usr/local/redis/master /usr/local/redis-cluster/redis01
进入目录删除多余文件:
例如这里的appendonly.aof 和 dump.rdb 文件 如果有nodes.conf文件也需要删除
修改redis.conf中的port和pidfile 值 并且设置 cluster-enabled yes
复制另外的五个redis服务器 在redis-cluster目录下,并分别修改port 和 pidfile值 以及 cluster-enabled yes
在这里启动和关闭redis,自己写了一个脚本,具体步骤
cd /usr/local/redis-cluster
touch start-all.sh 创建启动脚本
chmod u+x start-all.sh 设置当前用户有执行该脚本的权限
vim start-all.sh 编辑文件
文件内容:
cd redis01
./redis-server redis.conf
cd ..
cd redis02
./redis-server redis.conf
cd ..
cd redis03
./redis-server redis.conf
cd ..
cd redis04
./redis-server redis.conf
cd ..
cd redis05
./redis-server redis.conf
cd ..
cd redis06
./redis-server redis.conf
同样的步骤创建关闭脚本 内容为:
cd redis01
./redis-cli -p 7001 shutdown
./redis-cli -p 7002 shutdown
./redis-cli -p 7003 shutdown
./redis-cli -p 7004 shutdown
./redis-cli -p 7005 shutdown
./redis-cli -p 7006 shutdown
这样多redis是可以启动了,但是并没有形成集群

需要使用ruby 脚本搭建集群。首先需要ruby 的运行环境。
安装ruby
yum install ruby
yum install rubygems

上传redis-3.0.0.gem 文件至服务器
安装 ruby 脚本运行使用的包
在该目录下面: gem install redis-3.0.0.gem

剩下的一步就需要通过redis-trib.rb 来进行集群的搭建,该文件在编译redis目录下的src子目录中,我这里复制到了/usr/local/redis-cluster/下了
启动集群命令为:
./redis-trib.rb create --replicas 1 192.168.5.153:7001 192.168.5.153:7002 192.168.5.153:7003 192.168.5.153:7004 192.168.5.153:7005 192.168.5.153:7006
这里的1是表示每一个节点有一个备份机
redis-cli 连接集群命令: ./redis-cli -h 127.0.0.1 -p 7001 -c
-c :代表连接的是redis 集群

到这里redis的三种模式都完成了,因为刚好项目刚启动没有运维,自己就捣鼓了一下,顺便也总结了一下。
最后贴一下java单机版和集群的测试代码吧
单:
public void testJedisPool () throws Exception {
          // 第一步:创建一个JedisPool对象。需要指定服务端的 ip 及端口。
          JedisPool jedisPool = new JedisPool( "192.168.5.153" , 6379);
          // 第二步:从JedisPool中获得 Jedis 对象。
          Jedis jedis = jedisPool .getResource();
          // 第三步:使用 Jedis 操作 redis 服务器。
          jedis .set( "jedis" , "test" );
          String result = jedis .get( "jedis" );
          System. out .println( result );
          // 第四步:操作完毕后关闭 jedis 对象,连接池回收资源。
          jedis .close();
          // 第五步:关闭JedisPool对象。
          jedisPool .close();
     }
集:
     public void testJedisCluster () throws Exception {
          // 第一步:使用JedisCluster对象。需要一个Set<HostAndPort>参数。 Redis 节点的列表。
          Set<HostAndPort> nodes = new HashSet<>();
          nodes .add( new HostAndPort( "192.168.5.153" , 7001));
          nodes .add( new HostAndPort( "192.168.5.153" , 7002));
          nodes .add( new HostAndPort( "192.168.5.153" , 7003));
          nodes .add( new HostAndPort( "192.168.5.153" , 7004));
          nodes .add( new HostAndPort( "192.168.5.153" , 7005));
          nodes .add( new HostAndPort( "192.168.5.153" , 7006));
          JedisCluster jedisCluster = new JedisCluster( nodes );
          // 第二步:直接使用JedisCluster对象操作 redis 。在系统中单例存在。
          jedisCluster .set( "hello" , "helloworl" );
          String result = jedisCluster .get( "hello" );
          // 第三步:打印结果
          System. out .println( result );
          // 第四步:系统关闭前,关闭JedisCluster对象。
          jedisCluster .close();
     }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值