本站网址
www.kjyfx.com

『Java』Redis缓存服务器集群搭建及配置

一、Redis介绍

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 5种数据类型 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。

速度: 读 11.2万/秒 /写 8.6万/秒  平均 10万/秒

 

二、redis安装

1、将 redis-5.0.4.tar.gz 压缩包上传至服务器 /usr/local/src目录下

redis-5.0.4下载:https://www.lanzous.com/i6k23ub

redis官网下载:https://redis.io/download

 

2、执行命令进行解压,并将目录名改为redis,然后删除redis-5.0.4.tar.gz压缩包

解压命令:tar -xvf redis-5.0.4.tar.gz
目录更名:mv redis-5.0.4 redis
删除压缩包:rm -rf redis-5.0.4.tar.gz

得到以下文件及目录

 

3.1、进行编译,等待编译完成

在redis根目录中执行命令:make

 

3.2、进行安装

在redis根目录中执行命令:make install

 

三、集群搭建

1、为什么要搭建集群?

通常,为了提高网站响应速度,总是把热点数据保存在内存中而不是直接从后端数据库中读取。

Redis是一个很好的Cache工具。大型网站应用,热点数据量往往巨大,几十G上百G是很正常的事儿。

由于内存大小的限制,使用一台 Redis 实例显然无法满足需求,这时就需要使用多台 Redis作为缓存数据库。但是如何保证数据存储的一致性呢,这时就需要搭建redis集群.采用合理的机制,保证用户的正常的访问需求.

采用redis集群,可以保证数据分散存储,同时保证数据存储的一致性.并且在内部实现高可用的机制.实现了服务故障的自动迁移.

 

2、 集群搭建计划

主从划分:3台主机 3台从机共6台  端口划分7000-7005

 

3、创建文件夹

在redis根目录中执行命令:mkdir cluster
在cluster文件夹中创建6个文件夹:mkdir 7000 7001 7002 7003 7004 7005

 

4、关于redis配置文件

1、复制redis.config文件

将redis根目录中的redis.conf文件复制到cluster/7000/ 并以原名保存

在redis根目录中执行命令:cp redis.conf cluster/7000/

 

2、编辑redis.config配置文件

在7000文件夹中执行命令:vim redis.conf

 

(1)、去除IP绑定,在69行,前面加#号注释

 

(2)、关闭保护模式,在88行,改为no

 

(3)、修改端口号,92行,改为7000

(4)、开启后台启动,136行,改为yes

 

(5)、修改pid路径,在158行,路径修改为  /usr/local/src/redis/cluster/7000/redis.pid

 

(6)、修改持久化文件路径,在263行,修改为 /usr/local/src/redis/cluster/7000

 

(7)、设定内存优化策略,在597行,去掉注释,并将 noeviction  改为  volatile-lru

 

(8)、关闭AOF模式,699行改为no

 

(9)、开启集群配置,838行,去掉注释

 

 

(10)、开启集群配置文件,846行,去掉注释并改为   cluster-config-file nodes.conf

 

(11)、修改集群超时时间,852行,去掉注释

 

(12)、修改完成,ESC退出编辑模式,:wq命令保存退出

 

5、 复制修改后的配置文件

(1)、将7000文件夹下的redis.conf文件分别复制到7001-7005中

cp 7000/redis.conf 7001
cp 7000/redis.conf 7002
cp 7000/redis.conf 7003
cp 7000/redis.conf 7004
cp 7000/redis.conf 7005

 

(2)、分别将7001-7005文件夹中的redis.config文件中的7000改为对应的端口号的名称,分别编辑7001-7005文件夹中的redis.config(vim redis.config),根据相应的端口号,输入全局修改指令进行全局修改,并:wq保存退出

:%s/7000/7001/g
:%s/7000/7002/g
:%s/7000/7003/g
:%s/7000/7004/g
:%s/7000/7005/g

 

6、创建脚本

(1)、创建启动脚本

在cluster目录下创建start.sh脚本:vim start.sh

start.sh中内容输入:

redis-server 7000/redis.conf &
redis-server 7001/redis.conf &
redis-server 7002/redis.conf &
redis-server 7003/redis.conf &
redis-server 7004/redis.conf &
redis-server 7005/redis.conf &

 

(2)、创建关闭脚本

在cluster目录下创建start.sh脚本:vim shutdown.sh

shutdown.sh中内容输入:

redis-cli -p 7000 shutdown &
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 &

 

7、检查redis节点

启动命令:sh start.sh
检查是否全部启动命令:ps -ef|grep redis
关闭命令:sh shutdown.sh

 

四、Spring Boot整合Redis

在进行连接redis时,首先得关闭Linux系统防火墙

检查防火墙状态命令:service iptables status

临时命令在每次linux重启后失效
临时开启命令:service iptables start
临时关闭命令:service iptables stop

永久性生效,重启后不会复原,设置后需重启
永久开启命令:chkconfig iptables on
永久关闭命令:chkconfig iptables off

 

1、添加pom.xml依赖

<!--spring整合redis -->
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-redis</artifactId>
</dependency>

 

2、配置文件redis.properties

redis.nodes=192.168.38.128:7000,192.168.38.128:7001,192.168.38.128:7002,192.168.38.128:7003,192.168.38.128:7004,192.168.38.128:7005

 

3、Redis集群配置类

package com.kjyfx.config;

import java.util.HashSet;
import java.util.Set;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;

@Configuration //标识配置类
@PropertySource("classpath:/properties/redis.properties")//数据源
public class RedisConfig {
    @Value("${redis.nodes}")
    private String nodes; //node1,node2,nod3....
    
    @Bean
    public JedisCluster jedisCluster() {
        Set<HostAndPort> setNodes = new HashSet<>();
        String[] arrayNode = nodes.split(",");
        for (String node : arrayNode) {
            String host = node.split(":")[0];
            int port = Integer.parseInt(node.split(":")[1]);
            setNodes.add(new HostAndPort(host, port));
        }
        return new JedisCluster(setNodes);
    }
}

 

需要使用时,使用Autowired自动装配即可

//required = false 当用户使用时才注入
@Autowired(required = false)
private JedisCluster jedis; //注入redis集群对象

 

相关文件下载:https://www.lanzous.com/i6k7vpe

私人文档:

 

赞(2) 打赏
未经允许不得转载:所有资源由个人搜集整理自互联网,仅用于学习交流使用,请勿用于其他商业用途。如有侵权,请联系2448941602@qq.com删除科技云分享 » 『Java』Redis缓存服务器集群搭建及配置
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

更多资源,尽在微信公众号【科技云分享】

关注公众号加入Q群

我叫科技云,感谢您的支持~

支付宝扫一扫打赏

微信扫一扫打赏