Redis单机和集群配置(版本在5.0后)
摘抄并用于自己后查
单机版的配置:
1. 下载redis压缩包,然后解压缩文件(tar xzf);
2. 进入解压后的redis文件目录,编译redis源文件(make,没有c环境要gcc);
3. 把编译好的redis源文件安装到/usr/local/redis目录下,如果/local目录下没有redis目录,会自动新建redis目录;
4. 进入/usr/local/redis/bin 目录,直接 ./redis-server启动redis(此时为前端启动redis);
5. 将redis启动方式改为后端启动,具体做法:把解压缩的redis文件下的 redis.conf文件复制到/usr/local/redis/bin目录下,然后修改redis.conf文件 ->daemonize:no 改为yes
6. 在/bin目录下通过./redis-server redis.conf启动redis (此为后台启动)
集群配置:
一、Redis Cluster(Redis集群)简介
1)redis3.0版本之前只支持单例模式,在3.0版本后才支持集群。
2)redis集群采用P2P模式,是完全去中心化的,不存在中心节点或者代理节点。
3)redis集群是没有统一的入口,客户端连接集群时,连接的是集群中的任意节点即可,集群内部的节点是相互通信(PING-PONG机制),每个节点都是一个redis实例。
4)为了实现集群的高可用,即判断节点是否能正常使用,redis-cluster有一个投票容错机制:如果集群中超过半数的节点投票认为某个节点挂了,那么这个节点就是挂了(fail),这是判断节点是否挂了的方法。
5)那么如果判断集群是否挂了呢? -> 如果集群中任意一个节点挂了,而且该节点没有从节点(备份节点),那么这个集群就是挂了。这个是判断集群是否挂了的方法。
6)为什么任一节点挂了集群就是挂了呢? -> 因为集群内置了16384个slot(哈希槽),并且把所有的物理节点映射到这个16384[0-16383]个slot上,或者说把这些slot均等分配给了各节点。当需要在redis集群存放一个数据(key-value)时,redis会先对这个key做crc16算法,然后得到一个结果。再把这个结果对16384进行取余,这个余数会对应[0-16383]其中一个槽,进而决定key-value存储到哪个节点。所以一旦某个节点挂了,该节点对应的slot就无法使用,那么就会导致集群无法正常工作。读取时,也是先对这个key做crc16和取余得到对应存放的节点。
7)综上,每个redis集群理论上最多可以有16384个节点。
二、集群搭建需要的环境
1)redis集群至少需要3个节点,因为投票容错机制要求超过半数节点认为某个节点挂了,该节点才是挂了,所以2个节点无法构成集群。
2)要保证集群的高可用,需要每个节点都有从节点,也就是备份节点,所以redis集群至少需要6台服务器。
三、集群搭建具体步骤
安装环境和版本:centos7 , redis5.0.5。redis版本在5之前的集群需要安装ruby环境(这很耗时间,且有各种问题需要解决),redis5.0.0之后已经将redis-trib.rb 脚本的功能全部集成到redis-cli之中了。本文基于redis-cli的-cluster来搭建集群。
安装过程:
1. 下载并解压(为方便直接从上面单机版的将文件夹拷贝过来)
2. 编译安装:
make && make install
3.创建redis节点
在 /opt/redis-cluster/redis-5.0.5 下创建 redis_cluster文件夹,同时在里面创建redis7001,redis7002,redis7003,redis7004,redis7005,redis7006文件夹,并将redis.cof文件夹分别复制到这6个文件夹内,分别修改这个6个配置文件,修改内容如下:
port 7001 // 端口7001,7002,7003,7004,7005,7006
bind 本机ip //本地时192.168.80.131
daemonize yes // 设置redis后台运行
pidfile /var/run/redis_7001.pid // pidfile文件对应7001 ... 7006
cluster-enable yes // 开区集群,把注释去掉
cluster-config-file nodes_7001.conf // 集群的配置,配置文件首次启动自动生成
cluster-node-timeout 15000 // 请求超时,默认15秒,可自行设置
appendonly yes // aof日志开启,有需要就开启,时间长了文件会很大
4. 启动各节点:可以搞个批处理文件 startup.sh

5. 检查redis启动情况
ps -aux|grep redis
netstat -tnlp|grep redis

如果少了哪个,检查是否配置文件修改时出错
6. 创建集群
$ redis-cli --cluster create 192.168.80.131:7001 192.168.80.131:7002 192.168.80.131:7003 192.168.80.131:7004 192.168.80.131:7005 192.168.80.131:7006 --cluster-replicas 1

--cluster-replicas 1 命令的意思是:一主一从配置,六个节点就是三主三从
使用如下命令创建集群的状态:
redis-cli --cluster check 192.168.80.131:7001 #填写任意节点即可

Redis单机和集群配置(版本在5.0后)的更多相关文章
- java:redis(redis安装配置,redis的伪集群配置)
1.redis安装配置: .安装gcc : yum install gcc-c++ .使用FTP工具FileZilla上传redis安装包到linux根目录下(当前步骤可以替换为:在root目录下执行 ...
- 基于redis的cas集群配置(转)
1.cas ticket统一存储 做cas集群首先需要将ticket拿出来,做统一存储,以便每个节点访问到的数据一致.官方提供基于memcached的方案,由于项目需要,需要做计入redis,根据官方 ...
- 基于redis的cas集群配置
1.cas ticket统一存储 做cas集群首先需要将ticket拿出来,做统一存储,以便每个节点访问到的数据一致.官方提供基于memcached的方案,由于项目需要,需要做计入redis,根据官方 ...
- springboot整合redis单机及集群
一.单机配置 properties配置 #单机redis spring.redis.host=127.0.0.1 spring.redis.port=6379 spring.redis.passwor ...
- redis:哨兵集群配置
最少配置1主2从3哨兵 一.引言 上一篇文章我们详细的讲解了Redis的主从集群模式,其实这个集群模式配置很简单,只需要在Slave的节点上进行配置,Master主节点的配置不需要做任何更改,但是有一 ...
- spring + spring-data-redist + Redis 单机、集群(cluster模式,哨兵模式)
一.单机redis配置 1. 配置redis连接池 <bean id="jedisPoolConfig" class="redis.clients.jedis.Je ...
- CentOS7 配置 Redis Sentinel主从集群配置
Redis Sentinel主从集群 环境.准备 slave配置 sentinel配置 测试 C#连接Redis Sentinel 1.环境.准备 单实例3台CentOS7服务器,IP地址.: 192 ...
- redis学习五 集群配置
redis集群配置 0,整体概述 整体来说就是: 1,安装redis 2,配置多个redis实例 3,安装 ruby和rubygems 4,启动red ...
- ssh 免密码登录 单机和集群配置
1.在主机上(A)生成密钥对 ssh-keygen -t rsa -P '' #在A主机上执行,生成密钥对 直接按enter键 执行以下命令,会在 ~/.ssh/ 目录生成 id_rsa id_r ...
随机推荐
- [luogu 4389] 付公主的背包
题意:求一个较大的多重背包对于每个i的方案数,答案对998244353取模. 思路: 生成函数: 对于一个\(V\) 设: \(f(x) = \sum_{i=0}^{oo} x ^ {V * i} = ...
- Python 数据结构_队列
目录 目录 队列 队列 Queue 队列是一种先进先出(FIFO)的数据类型, 新的元素通过 入队 的方式添加进 Queue 的末尾, 出队 就是从 Queue 的头部删除元素. 用列表来做 Queu ...
- 1-电脑C盘(系统盘)清理
推荐,亲测有效! 转自: https://baijiahao.baidu.com/s?id=1612762644229315967&wfr=spider&for=pc
- 312. 戳气球【困难】【区间DP】
题目链接 有 n 个气球,编号为0 到 n-1,每个气球上都标有一个数字,这些数字存在数组 nums 中. 现在要求你戳破所有的气球.每当你戳破一个气球 i 时,你可以获得 nums[left] * ...
- 终于搭好了WinCE上MFC的SDK环境
终于可以我的嵌入式之旅了,幸福啊...
- shell 脚本999乘法表
99乘法表 vi st.sh 编辑一个脚本 chmod 777 st.sh 修改权限 注意调整空格,否则打印不出效果 执行脚本 ./st.sh 打印结果
- IQueryable 和 IEnumerable(二)
IQueryable 和 IEnumerable的扩展方法 一 我们从ef的DbSet<T>看起来,我们看到他继承了IQueryable<T> 和 IEnumerable&l ...
- JS的十大经典算法
冒泡排序(Bubble Sort) 冒泡排序须知: 作为最简单的排序算法之一,冒泡排序给我的感觉就像Abandon在单词书里出现的感觉一样,每次都在第一页第一位,所以最熟悉...冒泡排序还有一种优化算 ...
- 一道Oracle子查询小练习
一道Oracle子查询小练习 昨天晚上躺在床上看Oracle(最近在学习这个),室友说出个题目让我试试.题目如下: 有如下表结构,请选择出成绩为前三名的人的信息(如果成绩相同,则算并列),表名为t ...
- python: 函数递归与尾递归
如果一个函数在内部调用自己,那么这个函数就是递归函数. 例如一个阶乘函数:fact(n)=n! ,其实可以写成 fact(n)=n x fact(n-1). fact(n) 以递归的方式可以表示为: ...