Redis集群方案

Redis集群方案应该怎么做?都有哪些方案? 使用codis方案:目前用的多的集群方案,基本和twemproxy一致的效果,但它支持在节点数量改变情况下,旧节点数据可恢复到新hash节点。 Redis cluster3.0自带的集群:特点在于他的分布式算法不是一致性hash,而是hash槽的概念,以及自身支持节点设置从节点。 在业务代码层实现:起几个毫无关联的Redis实例,在代码层对key进行hash计算,然后去对应的Redis实例操作数据。这种方式对hash层代码要求比较高,考虑部分包括,节点失效后的替代算法方案,数据震荡后的自动脚本恢复,实例 阅读详情

一、应用场景及性能(在使用Redis之前我们要思考这框架能帮我们解决什么现实问题)


 1、缓存: 最常用的一种使用Redis的情景是会话缓存(session cache)。用Redis缓存会话比其他存储(如Memcached)的优势在于:Redis提供持久化。
     如: 图形验证码、短信、邮箱验证码、注册链接的有效期存储验证及有效期设置、第三方接口访问Token有效期设置、登录会话有效期
 2、排行榜(ZADD key score1 member1 ,ZREVRANGE key start stop WITHSCORES ,ZREMRANGEBYRANK key  start stop),如电商商城产品访问的排行榜。
 3、计数器(incr key value),统计用户访问登录次数,用户注册量统计,某新闻、产品浏览次数,访问流量统计是非常的实用。
 4、队列: Reids在内存存储引擎领域的一大优点是提供 list 和 set 操作,这使得Redis能作为一个很好的消息队列平台来使用。


 5、性能:
       Redis能读的速度是110000次/s,写的速度是81000次/s 。是属于单线程安全的。

 6、特点:
      6.1、数据类型,较为丰富,常用的支持String 、hash、list、set,而且支持缓存数据的有效期设置
      6.2、支持数据持久化,定期将内存中数据刷新到磁盘中
      6.3、主从节点同步
      6.4、可使用缓存实现队列传输

二、Redis实际集群部署操作步骤
1、下载部署包redis-3.0.7.tar.gz
2、将下载的包放入并解压到Linux系统指定目录中,在这里我以/home/目录为例,准备三台服务器分别为       
     192.168.113.138、192.168.113.134、192.168.113.131 下面步骤就不区分是在哪台服务器进行操作了,步骤都是一样的,先搭建一个单机版的示例,后面再搭建一个集群环境,遵循一步一步来原则
     --2.1、解压
     #tar -zxvf redis-3.0.7.tar.gz
     --2.2、执行make 对Redis解压后文件进行编译
     #cd  redis-3.0.7    
     #make
     --2.3、进入src 目录 make install 进行Redis安装
     #cd /home/redis/redis-3.0.7/src 
     #make install
     --2.4、 修改配置文件redis.conf daemonize属性改为yes (表明需要在后台运行) ,否则关闭命令窗口,Redis服务也会随着关停
     #vim /home/redis/redis-3.0.7/redis.conf
     --2.5、将redis-trib.rb 复制到/usr/local/bin目录 ,这样进入redis shell 窗口就方便些,不需要进入到/redis-3.0.7/目录中执行命令才可以进入
     #cd /home/redis/redis-3.0.7/src 
     #cp redis-trib.rb /usr/local/bin
     --2.6、Redis服务启动关停命令
     #cd   /home/redis/redis-3.0.7/
     -- 启动
     #redis-server redis.conf
     -- 关停
     #redis-cli shutdown

     --下面就是查看是否启动OK了:
     
    启动、关停服务都正常
   其他常用命令,详情请到中文Redis官方网进行查看
  3、单机版搭建比较简单可以快速完成,现在开始搭建Redis集群模式(如果集群中任意Master节点挂掉,且当前Master没有slave.集群就进入fail状态,表示redis集群挂掉了,所以部署的时候一定要给Master节点配置Salve节点),Redis支持分布式集群模式是从3.0版本开始支持的,之前版本就不支持分布式集群(只少准备三台服务器,主从Master、Savle节点不要部署在同一台服务器上,而是要分开部署)
     
    --3.1  在192.168.113.138 服务器 修改redis.conf 配置文件,配置支持分布式集群
    #vim /home/redis/redis-3.0.7/redis.conf
    --重要的配置如下
   
        port 6379  #redis访问端口默认是6379
	cluster-enabled yes   # 允许redis支持集群模式
	cluster-config-file nodes.conf  # 节点配置文件
	cluster-node-timeout 15000   # 节点超时毫秒
	appendonly yes
        bind 192.168.113.138 #绑定本机iP

 --3.2 创建Redis多个访问端口
    #mkdir -p /usr/local/cluster-test
    #cd /usr/local/cluster-test/
    #mkdir 7000
    #mkdir 7001
    --将redis.conf 分别拷贝到这6个文件夹中,并修改成对应的端口号
    #cp /home/redis/redis-3.0.7/redis.conf  /usr/local/cluster-test/7000
    #cp /home/redis/redis-3.0.7/redis.conf  /usr/local/cluster-test/7001
    #cp /home/redis/redis-3.0.7/redis.conf  /usr/local/cluster-test/7011
    --将redis.conf中的6379 替换成替换成7000、7001、7011
    #sed -i "s/6379/7000/g" /usr/local/cluster-test/7000/redis.conf
    #sed -i "s/6379/7001/g" /usr/local/cluster-test/7001/redis.conf
    #sed -i "s/6379/7011/g" /usr/local/cluster-test/7011/redis.conf
    --启动Redis 7000、7001、7011访问实列
    #cd /usr/local/cluster-test/7000/
    #redis-server redis.conf    
    #cd /usr/local/cluster-test/7001/
    #redis-server redis.conf
    #cd /usr/local/cluster-test/7011/
    #redis-server redis.conf

   --3.3 接下来要安装ruby(为什么要安装ruby呢? 搭建Redis集群需要使用到官方提供的ruby脚本。 )
--这里介绍在线安装模式
   #yum install ruby ruby-devel rubygems rpm-build
   --安装ruby和redis的连接组件
   #gem install redis

    --3.4、192.168.113.134、192.168.113.131也按照192.168.113.138上安装Redis的步骤进行安装,至于Redis访问端口可以改成不一样,并且启动Redis访问实列
   ---3.5、接下来就是将所有启动的Redis实列给集群起来,执行如下命令
    #redis-trib.rb create --replicas 1 192.168.113.138:7000 192.168.113.138:7001 192.168.113.138:7011  192.168.113.134:7006 192.168.113.134:7007 192.168.113.131:7008 192.168.113.131:7009 192.168.113.131:7010
   --安装成功后会出现如下信息
  
  --3.6 如果启动成功后想看看集群状态消息,会出现如上信息,可以通过如下命令
  #redis-trib.rb check 192.168.113.138:7000
  --3.7 如果想知道存取的key是存在哪台服务器上,可以通过如下命令打开shell 客户端:
  #redis-cli -c -h 192.168.113.138 -p 7000
 
上面例子以及实现了分布式集群获取数据例子,我从192.168.113.138:7000Redis实列获取到集群中的 192.168.113.131:7008服务器上的缓存数据
4、Redis分布式集群节点新增、删除操作
--4.1、新增一个为7012实列的Master节点到集群中
     #cd /usr/local/cluster-test/7012/
    #redis-server redis.conf  #修改端口port为7012
    #redis-trib.rb add-node  192.168.113.138:7012 192.168.113.138:7000   #代表将192.168.113.138:7012节点加入到192.168.113.138:7000所在的Redis集群中
   
  然后用输入检查集群状态消息的命令查看是否增加192.168.113.138:7012 为Master节点成功
  #redis-trib.rb check 192.168.113.138:7000
   
  结果是成功,但是你会发现192.168.113.138:7012并咩有分配哈希槽值(总共有16384个值),如果没有分配就不会有数据存储在此节点上,因此需要重新分配redis集群中的哈希槽值范围
  #redis-trib.rb reshard 192.168.113.138:7000
  
  ?要求输入每一个Master节点分配多少哈希槽值,我们这里已经有5个Master节点因此 要输入16384/5=3276
   输入3276后按回车键
  What is the receiving node ID? all
  *** The specified node is not known or not a master, please retry.
  What is the receiving node ID?5274e383f57df1d881e21d2b850712defa7143b1   #获取7012对应的ID值  M: 5274e383f57df1d881e21d2b850712defa7143b1   192.168.113.138:7012
 -- 后面的就按照界面提示操作就好,Redis进群哈希槽分配好之后输入如下命令查看是否分配好
 #redis-trib.rb reshard 192.168.113.138:7000
 
-- 4.2、上面已经将新增的Master节点192.168.113.138:7012 节点成功的加入到集群中,现在需要给当前Master节点192.168.113.138:7012配置一个Salves节点,为演示主从节点部署在不同服务器,这次新增192.168.113.134:7013Salve节点,进入192.168.113.134服务器
 #cd /usr/local/cluster-test
 #mkdir 7013
 #cp 7007/redis.conf /usr/local/cluster-test/7013
 #sed -i "s/7007/7013/g" /usr/local/cluster-test/7013/redis.conf

----master-id表示指定的主节点192.168.113.138:7012  node id。
#redis-trib.rb add-node --slave --master-id 5274e383f57df1d881e21d2b850712defa7143b1  192.168.113.134:7013 192.168.113.138:7012
#redis-trib.rb check 192.168.113.138:7000

-- 4.3 删除Master、Salve节点(如果某台Redis节点所在服务器要进行调整,我们就需要将当前节点上的数据给迁移出来分配到当前集群中的其他节点上面,然后当前节点移除集群中)
 #redis-trib.rb reshard 192.168.113.138:7012


What is the receiving node ID? #提示我们,需要移动到哪个id上,那就填192.168.113.131:7010的吧:
Source node #1:5274e383f57df1d881e21d2b850712defa7143b1  #从哪个节点移除数据这里是192.168.113.138:7012
Source node #2:done #done表示完成
Do you want to proceed with the proposed reshard plan (yes/no)? yes

#redis-trib.rb del-node 192.168.113.138:7012 5274e383f57df1d881e21d2b850712defa7143b1

这样就就将192.168.113.138:7012上的数据给移除出去,并将当前节点给移除当前集群中。

三、常见问题
1、如果出现
[ERR] Node 192.168.113.133:7000 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
就将指定的节点中将 appendonly.aof dump.rdb nodes.conf 文件删除就好
Docker部署Redis哨兵集群,保姆级部署方案 上篇讲了如何在物理机上部署Redis哨兵集群方案,刚好最近业务要求,需要在Docker中部署一套Redis哨兵集群,在这里将部署的过程给大家展示一下,以供有需要的朋友参考。:Docker容器化确保了Redis在不同环境(如开发、测试、生产)下的一致性。因为Docker镜像包含了运行Redis所需的所有依赖和配置,避免了“在我机器上能跑”的问题。:Docker使得部署Redis变得极为快速和简便。只需一条命令即可启动容器,大大缩短了部署时间。同时,根据需要轻松增加或减少容器数量,实现快速扩容或缩容。 阅读详情

相关推荐

redis常用集群方案汇总

前言 在生产环境下,往往要求系统具备高可用,承载高并发以及有着较好的抵御单点故障的能力,通常来说,使用集群部署可以达到这个目的 同样,对于redis的使用,即便单节点的性能已经很高了,但考虑到种种可能造成单点故障以及影响其高并发环境下整体性能的因素,因此,在系统设计之初,最好能结合自身的业务对redis的部署架构做一个整体的评估。 是否使用集群 关于这个问题,很多同学有不同的见解,比如说项目本身体量不大,在可遇见的业务增长范围内,为了满足快速迭代、快速上线的要求,单节点不是不可以,部署redis单节点,不管

congge 2万+

redis集群给新添加的节点分配槽道的操作

一、准备好redis集群如下: 10.211.55.5:8001> cluster nodes da23623c6e915de5256bb2252cd1057d4f29e558 10.211.55.5:8003 master - 0 1538583619331 0 connected 3f3049540ba60e30080847e78ccf832f94961da2 10.211.55....

sunjinjuan的博客 2759

c#.net客户端与redis集群

最全的教程部署redis cluster方式集群,及c# 写的访问集群的源码,自己的下载分数快不够,赚2分,教程地址:http://www.cnblogs.com/uucode/p/6486395.html

《redis设计与实现》-17 集群重新分片reshard

一 重新分片   Redis集群的重新分片操作可以将任意数量已经指派给某个节点(源节点)的槽改为指派给另一个节点(目标节点),并且相关槽所属的键值对也会从源节点被移动到目标节点。  重新分片操作可以在线进行,在重新分片过程中,集群不需要下线,并且源节点和目标节点都可以继续处理命令请求。 二 重新分片的原理    Redis的集群管理工具redis-trib,通过向源节点和目标节点发送命令来进...

bohu83的博客 2152

智能体评测技术与实践:从评估维度到DeepEval实战指南

智能体评测技术与实践:从评估维度到DeepEval实战指南 本文系统探讨了AI智能体的评测体系与实践方法。首先从四个关键维度构建评估框架:基础能力(意图理解、知识完整性)、复杂任务(多轮对话、动态工作流)、可靠性(幻觉抑制、安全合规)以及工具效率(参数填充、多工具协同)。其次分析了主流评测工具,包括xBench的动态双轨评估、DeepEval的全链路监控等解决方案。最后详细介绍了DeepEval的实战应用,涵盖环境配置、测试用例构建、指标配置及CI/CD集成,展示了如何通过代码化评估实现智能体质量的持续提升

Linda的自动化测试之旅 3414

cdh zookeeper未授权访问(安全漏洞)处理

前言: 最近公司在做安全漏洞扫描。发现cdh zookeeper存在未授权访问的问题。 ZooKeeper的节点有5种操作权限: CREATE、READ、WRITE、DELETE、ADMIN 也就是 增、删、改、查、管理权限,这5种权限简写为crwda(即:每个单词的首字符缩写) 注:这5种权限中,delete是指对子节点的删除权限,其它4种权限指对自身节点的操作权限 ZooKeeper的身份的认证有4种方式: world:默认方式,相当于全世界都能访问 auth:代表已经认证通过的..

belialxing的专栏 2446

redis三种集群方案详解(主从复制、哨兵模式、分片集群)

redis三种集群方案详解(主从复制、哨兵模式、分片集群) 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(Master),后者称为从节点(Slave);数据的复制是单向的,只能由主节点到从节点。默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,可以搭建主从集群,实现读写分离。

m0_64422133的博客 3205

显示模组Bonding IC气泡问题的诊断与优化策略

本文深入分析了显示模组Bonding IC气泡问题的成因与优化策略,涵盖IC两端剥离气泡、彩虹状水汽气泡、电极下方无规律气泡及IC输入端气泡等类型。通过工艺参数优化、材料存储处理、清洁环境控制及维修品特殊处理等多维度解决方案,有效降低气泡不良率。同时介绍了纳米改性ACF材料、激光辅助排泡技术等前沿解决方案,为触控显示行业提供实用参考。

weixin_26805597的博客 420

redis的集群方案和常见问题

本文讲解了redis集群的三种方式的常见问题和基本解决方案,包括主从集群,哨兵模式,分片集群方式

m0_37742400的博客 2171

RK3576开发板ROS2部署实战:从Buildroot配置到Hello World Demo

本文详细介绍了在RK3576开发板上部署ROS2的完整实战流程。从Buildroot工程配置、集成ROS2依赖,到搭建Docker交叉编译环境、处理编译难题,最终完成系统镜像打包并在板端成功运行Talker-Listener Demo。该指南旨在帮助开发者深入理解嵌入式机器人系统的构建链,实现从底层到应用的完全掌控。

mac99的博客 1154

vue3(微信公众号H5网页):调用wx.config报错config:fail,invalid signature,在vue3 h5项目开发微信内置浏览器JS-SDK/JS-API提示签名失效/错误

微信公众号网页,vue3 H5网页,uniapp h5,wx.config 报错:config:fail,invalid signature?无效签名,微信JSSDK分享接口中wx.config 出现invalid signature问题的解决办法,微信公众号签名失效,wx.config中出现invalid signature的解决方法,H5页面调起微信的拍照与分享功能,导致的config:invalid signature这个错误的解决办法,微信网页调用分享功能出现config:fail,invalid

✅ 精选推荐文章 5051

Redis集群环境搭建

Redis是缓存数据库,在大型系统中都有用到,这一节我们看下Redis集群系统在windows系统上怎样搭建,需要的安装环境。

游响云停专栏 1万+

【赛题解析&命令脚本配置】2023年全国职业院校技能大赛GZ073网络系统管理赛项赛题第10套模块A:网络构建 & (五)网络运维配置+(六)SDN网络配置-命令配置

【赛题解析&命令脚本配置】2023年全国职业院校技能大赛GZ073网络系统管理赛项赛题第10套模块A:网络构建 & (五)网络运维配置+(六)SDN网络配置-命令配置

君逍遥o 809

Redis的集群方案

Redis的集群方案

m0_70386582的博客 1888

知识图谱设计简记

知识图谱是一种语义化的知识表示框架,通过实体-关系-属性三元组形式表达现实世界关联。其核心价值在于关联化整合数据、支持可解释性推理和赋能智能化应用。知识图谱可分为通用型和领域型两类,基本构成包括实体、关系、属性等基础元素,以及本体和实例等架构层元素。设计方法主要有自上而下、自下而上和混合式三种,需遵循业务导向、一致性等原则。在建模时需要明确属性与实体的判断标准,规范处理关系的方向性与对称性,并合理构建多重关系。主流技术框架如RDF和属性图体系均支持多重关系建模,选择需考虑业务需求。本体作为知识图谱的概念骨架

生活在别处 358

数据结构之博弈树搜索(深度优先搜索)

数据结构之博弈树搜索(深度优先搜索)

LucianaiB的博客 1523

Redis集群方案——Redis分片集群

Redis分片集群(Redis Cluster)是Redis官方提供的分布式解决方案,它允许数据自动分布在多个Redis节点上,提供的Redis服务。主从和哨兵可以解决的问题。但是依然有两个问题没有解决:海量数据存储问题高并发写的问题使用分片集群可以解决上述问题,如图:分片集群特征:集群中有多个master,每个master保存不同数据每个master都可以有多个slave节点master之间通过ping监测彼此健康状态客户端请求可以访问集群任意节点,最终都会被转发到正确节点。

m0_74808313的博客 954

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【Redis】常见的 Redis 集群方案

常见的 Redis 集群方案

hui_zai_的博客 1024

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

redis 集群方案

redis 集群方案的介绍(主从模式、哨兵模式、Redis Cluster模式) 一、主从模式 将数据完全存储在单个redis中主要存在两个问题: 数据备份和数据体量较大造成的性能降低。 Redis的主从模式为这两个问题提供了一个较好的解决方案。主从模式指的是使用一个redis实例作为主机,其余的实例作为备份机。 主机和从机的数据完全一致,主机支持数据的写入和读取等各项操作,而从机则只支持与主机数据的同步和读取,也就是说,客户端可以将数据写入到主机,由主机自动将数据的写入操作同步到从机。 主从模式很好的解决

无名小生 7290

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Redis集群方案详解

本文深度解析Redis集群的三种主流方案:主从复制、哨兵模式和Cluster模式。主从复制实现读写分离和数据同步,通过PSYNC命令支持全量和增量同步;哨兵模式提供高可用性,实现自动故障检测和主从切换;Cluster模式则实现数据分片和水平扩展。文章详细阐述了各方案的架构设计、实现原理、配置示例及适用场景,并针对常见问题提供解决方案,为Redis集群部署提供了全面的最佳实践指导。

weixin_43076660的博客 1173

Redis 集群的三种方案

Redis 集群的三种方案 一、主从复制 slave of 二、哨兵模式(Sentinel) 三、集群(Cluster)

oyc的博客 1106

Redis 集群化的 3 种方案对比

因此,要想使用Codis,必须使用它内置的Redis,这也就意味着Codis中的Redis是否能跟上官方最新版的功能特性,可能无法得到保障,这取决于Codis的维护方,目前Codis已经不再维护,所以使用Codis时只能使用3.2.8版的Redis,这是一个痛点。采用中间加一层Proxy的中心化模式时,这就对Proxy的要求很高,因为它一旦出现故障,那么操作这个Proxy的所有客户端都无法处理,要想实现Proxy的高可用,还需要另外的机制来实现,例如Keepalive。

2401_86358808的博客 1263

Redis - 三种Redis集群实现方案之_基于代理的分片

集群实现的基础或者说核心价值是分片(sharding)。存储扩展:利用多节点内存总和构建超大存储空间计算扩展:通过多核/多机提升计算能力带宽扩展:分布式架构突破单机网络瓶颈Redis的集群实现方案可以归纳为客户端分片、基于代理的分片和路由查询这3种。fill:#333;color:#333;color:#333;fill:none;分片方案客户端分片代理分片路由查询一致性哈希TwemproxyCodis。

小工匠 3026

Redis集群方案介绍

本文节选自《App 后台开发运维和架构实践》一书 由于Redis出众的性能,其在众多的移动互联网企业中得到广泛的应用。Redis在3.0版本前只支持单实例模式,虽然现在的服务器 内存可以到100GB、200GB的规模,但是单实例模式限制了Redis没法满足业务的需求(例如新浪微博就曾经用Redis存储了超过1TB的数 据)。Redis的开发者Antirez早在博客上就提出在Redis ...

A3354636的博客 221

Redis集群部署方案

这里我们把 redis-master 手动停止,模拟 主从点挂掉的情况,此时 redis-slave1 还是从节点,而主节点变成了redis-slave2。Redis Cluster 是 Redis原生的分布式集群方案,支持数据的自动分片(sharding),从而实现水平扩展,处理大规模的数据和请求。从图里我们,可以看到redis-master的role是master,而redis-slave的role是slave。而我们在redis-master添加的键值对,在redis-slave里可以获得。

... 2176
上一篇: RocketMQ集群解决方案----JAVA应用
下一篇: Redis集群解决方案----JAVA应用
aspnetandjava
博客等级 码龄16年 43粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值