由于项目中需要搭建redis集群,这里记录安装过程。
一、环境说明
在生产环境中,官方建议使用6台redis(或虚机),其中三组,每组都是master-slave模式。
由于环境限制,我这里在一台机器上直接安装一个redis,通过使用3套配置文件来启动3个redis构建集群,效果是一样的,主要是配置文件修改。
只有三个主节点,没有从,实际应用中你可以加上(后面创建命令时会说明),在一台机器上操作,所以用三个不同端口来模拟三台设备:7000/7001/7002
二、安装redis,这个我使用的是3.8.2,新版本应该都可以。最初用5.0的没有编译通过。过程不详细说了,资料很多,大致:
wget http://download.redis.io/releases/redis-3.2.8.tar.gz
tar -xvf redis-3.2.8.tar.gz
cd redis-3.2.8
yum install gcc -y (如果已经安装gcc编译器可略过)
make MALLOC=libc
make install
完成安装。
三、创建三个配置文件
1、创建三个目录,存放三个不同的配置文件,模拟三个redis启动配置,目录名称分别:7000/7001/7002
cd redis
mkdir 7000 7001 7002
2、把已安装redis的配置文件分别复制到这三个文件夹中,后面要根据机器配置做修改,你也可以修改完在复制过来该一下即可。具体就是修改名字、端口、存放文件等,我们拿7000为例,剩余两个,比葫芦画瓢即可。
bind 193.193.193.28
port 7000
daemonize yes
pidfile /var/run/redis_7000.pid
logfile "/opt/redis/7000/redis.log"
cluster-enabled yes
cluster-config-file nodes-7000.conf
cluster-node-timeout 15000
cluster-require-full-coverage no
主要就是与端口有关的内容。
四、启动三个redis服务
redis-server 7000/redis.conf
redis-server 7001/redis.conf
redis-server 7002/redis.conf
五、安装ruby
因为redis集群创建工具是ruby开发的,所以先安装这个
yum install ruby
# 下载redisruby接口包
wget http://rubygems.org/downloads/redis-3.3.0.gem
# 安装rubygems,最新版本会自动安装
yum install rubygems
gem install -l redis-3.3.0.gem
# 把集群创建命令复制到用户命令空间
cp /opt/redis/src/redis-trib.rb /usr/local/bin/
六、创建集群
redis-trib.rb create --replicas 0 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002
# 注意:replicas参数表示每个主节点有几个从节点,因为我没有从节点所以为0,为1表示有一个从节点
# 注意:replicas参数表示每个主节点有几个从节点,因为我没有从节点所以为0,为1表示有一个从节点
如果每个点要做主从,则命令行配置6个节点即可,如下:
redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
6个节点每一对 都是一个主从。
执行成功会输出集群信息,中间会让你确认:yes即可
七、访问集群
redis集群无中心,使用springboot访问配置
1、添加依赖
org.springframework.boot
spring-boot-starter-data-redis
2、application.yml
#数据源
spring:
#jackson时间格式化
jackson:
time-zone: GMT+8
date-format: yyyy-MM-dd HH:mm:ss
#redis配置
redis:
cluster:
nodes: 192.168.68.100:7000,192.168.68.100:7001,192.168.68.101:7000,192.168.68.101:7001,192.168.68.102:7000,192.168.68.102:7001
timeout: 6000ms
password: 123456
lettuce:
pool:
max-active: 8
max-wait: -1ms
max-idle: 8
min-idle: 0
database: 0
3、配置bean
package com.carry.config;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
@Configuration
@AutoConfigureAfter(RedisAutoConfiguration.class)
public class RedisConfig {
@Bean
public RedisTemplate redisCacheTemplate(LettuceConnectionFactory redisConnectionFactory) {
//redis序列化器
Jackson2JsonRedisSerializer