使用Linux快速使用redis集群

安装环境:

  • Linxu(Cent-OS64位)。只有Base-Serve的Linux占用的资源更少,更快速,适合在上面搭建服务器
  • secureCRT。一款非常方便的远程控制软件,安装在Windos上,在上面操作要比直接在虚拟机里方便,Alt+P可以把Winods的文件上传文件到Linux中。
  • gcc。redis是C语言开发,安装redis需要先将官网下载的源码进行编译,编译依赖gcc环境。如果没有gcc环境,需要安装gcc。命令为:yum install gcc-c++
  • redis-3.0.0.tar.gz。在Linxus上使用redis的软件, 是一种更轻量级的数据库软件,多用于缓存的读写。
  • ruby。用ruby脚本搭建集群,要ruby的运行环境,直接yum install ruby就行
  • rubygems。同上,直接yum install rubygems就行
  • redis-3.0.0.gem。ruby脚本运行使用的包,需要redis-3.0.0.gem的包,在Linxu中 gem install redis-3.0.0 gem即可

 

Redis安装

1.将Windows下下载的压缩文件上传到Linux下。通过secureCRT进行上传,步骤如下:

  alt + p

  put F:/redis-3.0.0.tar.gz

2.解压文件

tar –zxvf redis-3.0.0.tar.gz

 

3.编译redis (编译,将.c文件编译为.o文件)

进入解压文件夹,cd redis-3.0.0

执行make 

         1)如果没有安装gcc,编译将出现错误提示。(如果安装失败,必须删除文件夹,重写解压)

                  

         2)安装成功

                  

 

4.安装

make PREFIX=/usr/local/redis install

 使用Linux快速使用redis集群_第1张图片

安装完后,在/usr/local/redis/bin下有几个可执行文件

redis-benchmark     ----性能测试工具

redis-check-aof     ----AOF文件修复工具

redis-check-dump    ----RDB文件检查工具(快照持久化文件)

redis-cli           ----命令行客户端

redis-server        ----redis服务器启动命令

 

使用Linux快速使用redis集群_第2张图片

 

5.: copy文件

redis启动需要一个配置文件redis.conf,可以修改端口号等信息。

cp redis.conf /usr/local/redis

 

6.复制节点

redis相当于一个redis点,本次搭建使用了6个redis节点,所以在/user/local/下复制出 redis01,redis02,redis03,redis04,redis05,redis06,他们的内部结构是一样的,需要配置redis.conf中的port值和取消cluster-enabled(是否可以搭建cluster)的注释

 

 

集群搭建环境

1.直接运行bin/redis-server将以前端模式启动,前端模式启动的缺点是启动完成后,不能再进行其他操作,如果要操作必须使用ctrl+c,同时redis-server程序结束,不推荐使用此方法。

/usr/local/redis/bin/redis-server

使用Linux快速使用redis集群_第3张图片

使用CTRL+ C 停止前端模式

 

2.后端模式:

修改redis.conf配置文件, daemonize yes 以后端模式启动。

vim /usr/local/redis/redis.conf

 

启动时,指定配置文件

cd /usr/local/redis/

./bin/redis-server ./redis.conf

 

Redis默认端口6379,通过当前服务进行查看

ps -ef | grep -i redis

 

停止Redis的方式是向Redis发送SHUTDOWN命令,方法为:(关闭默认端口)

cd /usr/local/redis

./bin/redis-cli shutdown

 

集群搭建环境

1、使用ruby脚本搭建集群。需要ruby的运行环境。

安装ruby

yum install ruby

yum install rubygems

 

2、安装ruby脚本运行使用的包。

[root@localhost ~]# gem install redis-3.0.0.gem

Successfully installed redis-3.0.0

1 gem installed

Installing ri documentation for redis-3.0.0...

Installing RDoc documentation for redis-3.0.0...

[root@localhost ~]#

 

[root@localhost ~]# cd redis-3.0.0/src

[root@localhost src]# ll *.rb

-rwxrwxr-x. 1 root root 48141 Apr  1  2015 redis-trib.rb

搭建步骤

假设6台redis服务器,搭建伪分布式

需要6个redis实例。

需要运行在不同的端口7001-7006

第一步:创建6个redis实例,每个实例运行在不同的端口。需要修改redis.conf配置文件。配置文件中还需要把cluster-enabled yes前的注释去掉。

使用Linux快速使用redis集群_第4张图片

第二步:启动每个redis实例。

第三步:使用ruby脚本搭建集群。

./redis-trib.rb create --replicas 1 192.168.25.153:7001 192.168.25.153:7002 192.168.25.153:7003 192.168.25.153:7004 192.168.25.153:7005 192.168.25.153:7006

创建关闭集群的脚本:

[root@localhost redis-cluster]# vim shutdow-all.sh

redis01/redis-cli -p 7001 shutdown

redis01/redis-cli -p 7002 shutdown

redis01/redis-cli -p 7003 shutdown

redis01/redis-cli -p 7004 shutdown

redis01/redis-cli -p 7005 shutdown

redis01/redis-cli -p 7006 shutdown

[root@localhost redis-cluster]# chmod u+x shutdow-all.sh

[root@localhost redis-cluster]# ./redis-trib.rb create --replicas 1 192.168.25.153:7001 192.168.25.153:7002 192.168.25.153:7003 192.168.25.153:7004 192.168.25.153:7005  192.168.25.153:7006

>>> Creating cluster

Connecting to node 192.168.25.153:7001: OK

Connecting to node 192.168.25.153:7002: OK

Connecting to node 192.168.25.153:7003: OK

Connecting to node 192.168.25.153:7004: OK

Connecting to node 192.168.25.153:7005: OK

Connecting to node 192.168.25.153:7006: OK

>>> Performing hash slots allocation on 6 nodes...

Using 3 masters:

192.168.25.153:7001

192.168.25.153:7002

192.168.25.153:7003

Adding replica 192.168.25.153:7004 to 192.168.25.153:7001

Adding replica 192.168.25.153:7005 to 192.168.25.153:7002

Adding replica 192.168.25.153:7006 to 192.168.25.153:7003

M: 2e48ae301e9c32b04a7d4d92e15e98e78de8c1f3 192.168.25.153:7001

   slots:0-5460 (5461 slots) master

M: 8cd93a9a943b4ef851af6a03edd699a6061ace01 192.168.25.153:7002

   slots:5461-10922 (5462 slots) master

M: 2935007902d83f20b1253d7f43dae32aab9744e6 192.168.25.153:7003

   slots:10923-16383 (5461 slots) master

S: 74f9d9706f848471583929fc8bbde3c8e99e211b 192.168.25.153:7004

   replicates 2e48ae301e9c32b04a7d4d92e15e98e78de8c1f3

S: 42cc9e25ebb19dda92591364c1df4b3a518b795b 192.168.25.153:7005

   replicates 8cd93a9a943b4ef851af6a03edd699a6061ace01

S: 8b1b11d509d29659c2831e7a9f6469c060dfcd39 192.168.25.153:7006

   replicates 2935007902d83f20b1253d7f43dae32aab9744e6

Can I set the above configuration? (type 'yes' to accept): yes

>>> Nodes configuration updated

>>> Assign a different config epoch to each node

>>> Sending CLUSTER MEET messages to join the cluster

Waiting for the cluster to join.....

>>> Performing Cluster Check (using node 192.168.25.153:7001)

M: 2e48ae301e9c32b04a7d4d92e15e98e78de8c1f3 192.168.25.153:7001

   slots:0-5460 (5461 slots) master

M: 8cd93a9a943b4ef851af6a03edd699a6061ace01 192.168.25.153:7002

   slots:5461-10922 (5462 slots) master

M: 2935007902d83f20b1253d7f43dae32aab9744e6 192.168.25.153:7003

   slots:10923-16383 (5461 slots) master

M: 74f9d9706f848471583929fc8bbde3c8e99e211b 192.168.25.153:7004

   slots: (0 slots) master

   replicates 2e48ae301e9c32b04a7d4d92e15e98e78de8c1f3

M: 42cc9e25ebb19dda92591364c1df4b3a518b795b 192.168.25.153:7005

   slots: (0 slots) master

   replicates 8cd93a9a943b4ef851af6a03edd699a6061ace01

M: 8b1b11d509d29659c2831e7a9f6469c060dfcd39 192.168.25.153:7006

   slots: (0 slots) master

   replicates 2935007902d83f20b1253d7f43dae32aab9744e6

[OK] All nodes agree about slots configuration.

>>> Check for open slots...

>>> Check slots coverage...

[OK] All 16384 slots covered.

[root@localhost redis-cluster]#

 

java上连接集群

第一步:使用JedisCluster对象。需要一个Set参数。Redis节点的列表。

第二步:直接使用JedisCluster对象操作redis。在系统中单例存在。

第三步:打印结果

第四步:系统关闭前,关闭JedisCluster对象。

public void testJedisCluster() throws Exception {

         // 第一步:使用JedisCluster对象。需要一个Set参数。Redis节点的列表。

         Set nodes = new HashSet<>();

         nodes.add(new HostAndPort("192.168.25.153", 7001));

         nodes.add(new HostAndPort("192.168.25.153", 7002));

         nodes.add(new HostAndPort("192.168.25.153", 7003));

         nodes.add(new HostAndPort("192.168.25.153", 7004));

         nodes.add(new HostAndPort("192.168.25.153", 7005));

         nodes.add(new HostAndPort("192.168.25.153", 7006));

         JedisCluster jedisCluster = new JedisCluster(nodes);

         // 第二步:直接使用JedisCluster对象操作redis。在系统中单例存在。

         jedisCluster.set("hello", "100");

         String result = jedisCluster.get("hello");

         // 第三步:打印结果

         System.out.println(result);

         // 第四步:系统关闭前,关闭JedisCluster对象。

         jedisCluster.close();

     }

 

你可能感兴趣的:(java后端架构)