首页 > 其他 > 详细

Redis 模拟搭建Redis集群

时间:2020-09-17 14:40:30      阅读:46      评论:0      收藏:0      [点我收藏+]

使用环境:Centos7.6 + Redis6.0.8

准备工作,具体可看 Linux安装Redis

# 下载Redis
wget http://download.redis.io/releases/redis-6.0.8.tar.gz

# 将Centos7默认的gcc4,升级到gcc9 (https://www.cnblogs.com/sivanchan/p/13664495.html)
yum install centos-release-scl
yum install devtoolset-9-gcc*
scl enable devtoolset-9 bash

# 将Redis的包解压到安装目录,编译安装
tar -zxvf redis-6.0.8.tar.gz -C /usr/local/redis/
cd /usr/local/redis/redis-6.0.8/
make
make install PREFIX=/usr/local/redis/redis-6.0.8

单机采用多端口的方式,模拟Redis集群。三台主机,每台主机搭配两台从机

# 在Redis目录创建cluster文件夹,并在cluster文件夹下创建9个文件夹保存节点数据,这里使用7001-7009
mkdir -pv cluster/{7001,7002,7003,7004,7005,7006,7007,7008,7009}

修改Redis配置文件:

vi /usr/local/redis/redis-6.0.8/redis.conf

# 将绑定IP注释
bind 127.0.0.1

# 关闭保护模式
protected-mode no

# 修改服务端口号
port 7001

# 后台启动
daemonize yes

# 修改pid保存位置
pidfile /usr/local/redis/redis-6.0.8/cluster/7009/redis_7009.pid

# 设置快照文件的存放路径,是一个目录
dir /usr/local/redis/redis-6.0.8/cluster/7009

# 修改内存策略
maxmemory-policy allkeys-lru

# 开启集群配置
cluster-enabled yes

# 配置node节点
cluster-config-file nodes-7009.conf

# 开启集群超时设定
cluster-node-timeout 15000

# 定义日志级别。
# 默认值为notice,有如下4种取值:
# debug(记录大量日志信息,适用于开发、测试阶段)
# verbose(较多日志信息)
# notice(适量日志信息,使用于生产环境)
# warning(仅有部分重要、关键信息才会被记录)
loglevel notice

# 日志文件
logfile "/usr/local/redis/redis-6.0.8/cluster/log/redis_7001.log"

Redis在生产环境中,采用配置参数maxmemory 的方式来限制内存大小。当实际存储内存超出maxmemory 参数值时,开发者们可以通过这几种方法——Redis内存淘汰策略,来决定如何腾出新空间继续支持读写工作。
参考:Redis内存策略

Redis内存策略 说明
volatile-lru 为已经添加了超时时间的数据采用LRU算法进行删除
allkeys-lru 所有的key中通过LRU算法进行删除
volatile-random 在已经设定超时时间的数据中,随机删除
allkeys-random 在所有的key中,使用LRU算法进行随机删除
volatile-ttl 在已经设定超时时间的数据中,根据TTL机制排序,将马上要过期的数据删除
noeviction (默认的) 如果采用该机制,那么内存数据不会删除,将报错消息返回给用户

调整配置文件

# 将原来修改的redis.conf复制到对应的节点目录,并给改成对应的节点信息(端口号等)
cp /usr/local/redis/redis-6.0.8/redis.conf /usr/local/redis/redis-6.0.8/cluster/7001/redis.conf
...

# vim 快速替换 %s/7000/7001/g

启动全部Redis

# !/bin/bash
for i in {1..9}
do
	/usr/local/redis/redis-6.0.8/bin/redis-server /usr/local/redis/redis-6.0.8/cluster/700$i/redis.conf	
done

# 查看
ps -ef | grep redis

# 杀死全部Redis进程
pkill -9 redis

# 重启不了请清除节点数据

创建集群命令

# --cluster-replicas 2 表示每台主机配置两台从机
# 低版本的使用redis/src/redis-trib.rb create --replicas 2 ...
# 设置了密码的话,加上-a masterauth
./usr/local/redis/redis-6.0.8/bin/redis-cli --cluster create 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 127.0.0.1:7006 127.0.0.1:7007 127.0.0.1:7008 127.0.0.1:7009 --cluster-replicas 2

进行测试

public static void main(String[] args) {

        Set<HostAndPort> nodes = new HashSet<HostAndPort>();
        nodes.add(new HostAndPort("152.136.24.98", 7009));
        nodes.add(new HostAndPort("152.136.24.98", 7001));
        nodes.add(new HostAndPort("152.136.24.98", 7002));
        nodes.add(new HostAndPort("152.136.24.98", 7003));
        nodes.add(new HostAndPort("152.136.24.98", 7004));
        nodes.add(new HostAndPort("152.136.24.98", 7005));
        nodes.add(new HostAndPort("152.136.24.98", 7006));
        nodes.add(new HostAndPort("152.136.24.98", 7007));
        nodes.add(new HostAndPort("152.136.24.98", 7008));
        JedisCluster jedisCluster = new JedisCluster(nodes);
        jedisCluster.set("Redis", "Redis集群入门");
        String result = jedisCluster.get("Redis");
        System.out.println(result);
}

Redis 模拟搭建Redis集群

原文:https://www.cnblogs.com/sivanchan/p/13684976.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!