Redis单机和集群环境搭建

一、安装单机版redis 

1、可以自己去官网下载,当然也可以用课程提供的压缩包

# yum install gcc
# wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
# tar -xzvf tcl8.6.1-src.tar.gz
# cd  /usr/local/tcl8.6.1/unix/
# ./configure  
# make && make install

2、使用redis-3.2.8.tar.gz(稳定版)

# tar -zxvf redis-3.2.8.tar.gz
# cd /usr/local/redis-3.2.8
# make
# make test
# make install

3、redis的生产环境启动方案

(1)redis utils目录下,有个redis_init_script脚本
(2)将redis_init_script脚本拷贝到linux的/etc/init.d目录中,将redis_init_script重命名为redis_6379,6379是我们希望这个redis实例监听的端口号
(3)修改redis_6379脚本的第6行的REDISPORT,设置为相同的端口号(默认就是6379)
(4)创建两个目录:/etc/redis(存放redis的配置文件),/var/redis/6379(存放redis的持久化文件)
(5)修改redis配置文件(默认在根目录下,redis.conf),拷贝到/etc/redis目录中,修改名称为6379.conf
(6)修改redis.conf中的部分配置为生产环境

daemonize    yes                            #让redis以daemon进程运行
pidfile      /var/run/redis_6379.pid        #设置redis的pid文件位置
port        6379                           #设置redis的监听端口号
dir         /var/redis/6379                 #设置持久化文件的存储位置

(7)启动redis,执行cd /etc/init.d, chmod 777 redis_6379,./redis_6379 start

(8)确认redis进程是否启动,ps -ef | grep redis

(9)让redis跟随系统启动自动启动

  在redis_6379.config脚本中,最上面,加入两行注释

    # chkconfig:   2345 90 10

    # description:  Redis is a persistent key-value database

    chkconfig redis_6379 on

4、redis cli的使用

redis-cli SHUTDOWN                                  #连接本机的6379端口停止redis进程
redis-cli -h 127.0.0.1 -p 6379 SHUTDOWN         #制定要连接的ip和端口号
redis-cli PING                                      #ping redis的端口,看是否正常
redis-cli                                           #进入交互式命令行SET k1 v1
GET k1

二、Redis集群(读写分离+高可用+多master)

1、redis cluster的重要配置

       cluster-enabled <yes/no>

  cluster-config-file <filename>:这是指定一个文件,供cluster模式下的redis实例将集群状态保存在那里,包括集群中其他机器的信息,比如节点的上线和下限,故障转移,不是我们去维护的,给它指定一个文件,让redis自己去维护的

  cluster-node-timeout <milliseconds>:节点存活超时时长,超过一定时长,认为节点宕机,master宕机的话就会触发主备切换,slave宕机就不会提供服务

2、在三台机器上启动6个redis实例

(1)在eshop-cache03上部署目录

  /etc/redis(存放redis的配置文件);

  /var/redis/6379(存放redis的持久化文件)

(2)编写配置文件

redis cluster集群,要求至少3个master,去组成一个高可用,健壮的分布式的集群,每个master都建议至少给一个slave,3个master,3个slave,最少的要求

正式环境下,建议都是说在6台机器上去搭建,至少3台机器

保证,每个master都跟自己的slave不在同一台机器上,如果是6台自然更好,一个master+一个slave就死了

 3台机器去搭建6个redis实例的redis cluster

# mkdir -p /etc/redis-cluster
# mkdir -p /var/log/redis
# mkdir -p /var/redis/7001

.conf配置文件:

port 7001
cluster-enabled yes
cluster-config-file /etc/redis-cluster/node-7001.conf
cluster-node-timeout 15000
daemonize    yes                            
pidfile        /var/run/redis_7001.pid                         
dir         /var/redis/7001        
logfile /var/log/redis/7001.log
bind 192.168.31.187        
appendonly yes

  至少要用3个master节点启动,每个master加一个slave节点,先选择6个节点,启动6个实例

  将上面的配置文件,在/etc/redis下放6个,分别为: 7001.conf,7002.conf,7003.conf,7004.conf,7005.conf,7006.conf

(3)准备生产环境的启动脚本

  在/etc/init.d下,放6个启动脚本,分别为: redis_7001, redis_7002, redis_7003, redis_7004, redis_7005, redis_7006

  每个启动脚本内,都修改对应的端口号

(4)分别在3台机器上,启动6个redis实例

  将每个配置文件中的slaveof给删除

3、创建集群

# yum install -y ruby
# yum install -y rubygems
# gem install redis

 3.1、在执行 gem install redis时候,出现
    ERROR:  Error installing redis:
        redis requires Ruby version >= 2.2.2.
 这是由于linux本身默认的ruby版本过低
  

    # sudo yum install curl# curl -L get.rvm.io | bash -s stable# source /usr/local/rvm/scripts/rvm# rvm list known# rvm install 2.5.1# rvm use 2.5.1# rvm use 2.5.1 --default

   3.2、执行中出现:[curl: (35) SSL connect error
  解决方法:升级网络安全服务即可。
 

# yum update nss 
# cp /usr/local/redis-3.2.8/src/redis-trib.rb /usr/local/bin

# redis-trib.rb create --replicas 1 192.168.51.118:7001 192.168.51.118:7002 192.168.51.119:7003 192.168.51.119:7004 192.168.51.120:7005 192.168.51.120:7006
>>> Creating cluster
[ERR] Sorry, can't connect to node 192.168.51.119:7003

 出现这个error,是由于防火墙导致,此时,关闭防火墙的方法为:

  3.3、永久性生效

开启:chkconfig iptables on

关闭:chkconfig iptables off

  3.4、 即时生效,重启后失效

开启:service iptables start

关闭:service iptables stop


--replicas: 每个master有几个slave

6台机器,3个master,3个slave,尽量自己让master和slave不在一台机器上

>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.51.118:7001
192.168.51.119:7003
192.168.51.120:7005
Adding replica 192.168.51.119:7004 to 192.168.51.118:7001
Adding replica 192.168.51.118:7002 to 192.168.51.119:7003
Adding replica 192.168.51.120:7006 to 192.168.51.120:7005
M: c929af23011ce7e6888721845d1d300196c3046f 192.168.51.118:7001slots:0-5460 (5461 slots) master
S: 60643541639fa838a23708027dfd8f05084fa0bb 192.168.51.118:7002replicates c330af95e5053ead51943d17b7ede77ff26e357c
M: c330af95e5053ead51943d17b7ede77ff26e357c 192.168.51.119:7003slots:5461-10922 (5462 slots) master
S: bde24d208a5c42771348bbedb2351f0b7ef9c06a 192.168.51.119:7004replicates c929af23011ce7e6888721845d1d300196c3046f
M: 422632826b23edf928d213e980ea0680b1a15ac0 192.168.51.120:7005slots:10923-16383 (5461 slots) master
S: 1e242b9cd55bd702dd386ed3d74916ad6fb78a10 192.168.51.120:7006replicates 422632826b23edf928d213e980ea0680b1a15ac0
Can I set the above configuration? (type 'yes' to accept): yes

 redis-trib.rb check 192.168.31.187:7001

4、读写分离+高可用+多master

读写分离:每个master都有一个slave
高可用:master宕机,slave自动被切换过去
多master:横向扩容支持更大数据量

转载于:https://www.cnblogs.com/Chi-Sophia/p/9886545.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/250331.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

yum离线安装

安装yum-plugin-downloadonly插件 yum install -y yum-plugin-downloadonly下载对应的软件包&#xff0c;我们以mysql为例&#xff0c;终端输入如下命令 yum install -y --downloadonly --downloaddir/soft/mysql mysql --downloaddir用来指定下载的路径转载于:https://www.cnb…

算法 --- 递归实现多级树展开结构

说明 先根据数据渲染,然后再实现事件 渲染 在项目中,经常会给出一个深度不确定的数组,数字结构如下: data [{name: a, child:[{name: a1},{name: a2, child: [{name:a21}]}]},{name: b} ]要求将数组渲染成对应的目录结构, 结构如下: <ul><li>a<ul><…

PYTHON自动化Day4-交换变量,字符串方法,拷贝,集合,文件,文件指针

一.判断 # 非空即真、非0即真 # 不为空的话就是true&#xff0c;是空的话就是false # 只要不是0就是true&#xff0c;是0就是false# 布尔类型 # True False name input(请输入你的名字&#xff1a;).strip() a [] #false d{} # false c 0 #false f tuple() #false e #fa…

Ajax-jsonp

一、什么是Jsonp jsonp(json with padding) 是一种“使用模式”&#xff0c;可以让网页从别的域名那获取资料&#xff0c;即跨域读取数据。 为什么会使用jsonp呢&#xff1f;因为同源策略&#xff08;数据来源一致&#xff09;&#xff0c;现在所有支持javascript 的浏览器都会…

javascript --- [读书笔记] 回流与重绘 前端优化小结

1. 浏览器渲染原理 请说出: 从用户在浏览器地址输入网址,到看整个页面,中间都发生了哪些事情? HTTP请求阶段HTTP响应阶段浏览器渲染阶段 1.1 可能用到的知识 1.1.1 进程 Process、线程 Thread、 栈内存 Stack 进程: 就是开的每一个程序: QQ、网易云音乐、Typora、VSCode……

ARP协议,以及ARP欺骗

1.定义&#xff1a; 地址解析协议&#xff0c;即ARP&#xff08;Address Resolution Protocol&#xff09;&#xff0c;是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机&#xff0c;并接收返回消息&#xff0c;以此…

css --- [小结]让盒子水平垂直居中的解决方案

描述 有如下模型,想办法让 <style>.box{width: 500px;height: 500px;background: skyblue;} </style> <div class"box"><div class"inner"></div> </div>想办法让inner在box中水平垂直居中 方案1: 使用绝对定位 让…

数组洗牌 Fisher Yates

看播放器代码时发现的这个洗牌算法&#xff0c;再网上查了一番 作用是把数组变成随机序列&#xff0c;原理类似于从牌堆A中随机抽牌放进牌堆B 代码1&#xff1a; 返回一个由&#xff08;数组下标&#xff09;组成的数组 function random(length) {function shuffle (arr) {for…

一个不错的MYSQL数据库备份类,PHP版,一个文件,精简版

1 <?php2 class DbManage {3 var $db; // 数据库连接4 var $database; // 所用数据库5 var $sqldir; // 数据库备份文件夹6 // 换行符7 private $ds "\n";8 // 存储SQL的变量9 public $sqlContent "";10 // 每条sql…

javascript --- 堆栈内存与闭包的作用

你可能会用到的 堆内存: 存储引用类型值所在的空间栈内存: 存储基本类型值和存储代码所在空间函数上下文: JS每一个函数在执行的时候都会创建一个执行上下文 1. 堆内存中的数字和字符串都是相等的 let a {}, b0, c0; a[b] marron; a[c] Mar console.log(a[b]) // Mar第一…

python_sting字符串的方法及注释

string类型是python内置的类型&#xff0c;无需安装 方法/属性说明 capitalize() 把字符串的第一个字符改为大写 casefold() 把整个字符串的所有字符改为小写 center(width) 将字符串居中&#xff0c;并使用空格填充至长度width的新字符串 count(sub[,start[,end]]) …

作业3

import turtle turtle.bgcolor(red) turtle.color(yellow)turtle.fillcolor(yellow) turtle.begin_fill() for i in range(5):turtle.forward(100)turtle.right(144) turtle.end_fill() turtle.done()转载于:https://www.cnblogs.com/zhangkef97/p/9016608.html

javascript --- [小练习]变量提升、优先级综合

求下列函数输出结果 function Foo() {getName function() {console.log(1)}return this } Foo.getName function() {console.log(2) } Foo.prototype.getName function() {console.log(3) } var getName function() {console.log(4) }function getName() {console.log(5) …

Confluence 6 自定义 Decorator 模板的宏和针对高级用户

宏 页面的某些部分使用的是 Velocity 宏进行创建的&#xff0c;包括导航栏。有关宏的创建&#xff0c;你可以参考页面 Working With Decorator Macros 页面中的内容。 针对高级用户 velocity 目录是 Confluence 首先进行模板搜索的查找路径。你可以对 Confluence 的 velocity …

Matlab之rand(), randn(), randi()函数的使用方法

1. rand()函数用于生成取值在&#xff08;0~1&#xff09;之间均匀分布的伪随机数。rand(n)&#xff1a;生成n*n的0~1之间的满足均匀分布的伪随机矩阵&#xff1b;rand(m,n)&#xff1a;生成m*n的伪随机数&#xff1b;rand(m,n,double)&#xff1a;生成m*n的双精度伪随机数&am…

javascript --- [有趣的条件]双等号的隐式调用和数据劫持

1 双等号的隐式调用和数据劫持 求下面条件,在a为什么样时,等号成立 if(a 1 && a 2 && a 3){console.log(等号成立) }1.1 双等号的隐式转换 首先得了解双等号的隐式转换规则 等式备注对象 字符串隐式调用 toString方法将对象转换成字符串null undeifne…

分组查询

1、简单分组查询 语法形式&#xff1a; select function() from table_name where condition group by field; 进行分组查询时&#xff0c;分组所依据的字段上的值一定要有重复值&#xff0c;否则分组没有任何意义。 2、实现统计功能分组查询 关键字group by单独使用时&#xf…

深入探讨多模态模型和计算机视觉

近年来&#xff0c;机器学习领域在从图像识别到自然语言处理的不同问题类型上取得了显着进展。然而&#xff0c;这些模型中的大多数都对来自单一模态的数据进行操作&#xff0c;例如图像、文本或语音。相比之下&#xff0c;现实世界的数据通常来自多种模态&#xff0c;例如图像…

移动硬盘函数不正确要如何寻回资料

移动磁盘打不开函数不正确&#xff0c;是因为这个I盘的文件系统内部结构损坏导致的。要恢复里面的数据就必须要注意&#xff0c;这个盘不能格式化&#xff0c;否则数据会进一步损坏。具体的恢复方法看正文 工具/软件&#xff1a;AuroraDataRecovery 步骤1&#xff1a;先百度搜索…

vue --- [全家桶]vue-router

1. Vue - router Vue Router是 Vue.js 官方的路由管理器它和Vue.js的核心深度集成,可以非常方便的用于SPA应用程序的开发 Vue Router包含的功能有: 支持HTML5历史模式或hash模式支持嵌套路由支持路由参数支持编程式路由支持命名路由 <div id"app"><rout…