文档章节

redis(9)、redis集群之redis Cluster使用

haoran_10
 haoran_10
发布于 2016/07/15 16:40
字数 906
阅读 99
收藏 2
点赞 0
评论 1

前提:redis集群分片,目前redis有两类方案

  • 哈希槽(hash slot),代表方案:redis cluster
  • 一致性哈希,代表方案:twemproxy、codis

  本篇是针对redis cluster配置实现,原理会在另一个文章在解析。By haoran-10.iteye.com

 

 

先理解几个关键词:

节点:单个redis运行时,是孤立的,一旦出现故障,最多主从复制时,数据不会丢失,但是造成了redis不可用。redis单机,一个节点。

集群:很多节点通过某种方案联系起来,一起提供redis服务,称为redis集群。单个节点出现故障时,数据会转移(不保证强一致性)到安全的备份节点,提供高可用的redis服务,缺点是不可以使用不支持处理多个              键的命令

分片:redis数据很多时,单个redis放不下,此时redis集群通过分片技术,把数据平均分配到不同的节点。

哈希槽:redis集群通过哈希槽的方式,把数据分配到不同的节点。Redis集群有16384个哈希槽,我们只是使用键的CRC16编码对16384取模来计算一个指定键所属的哈希槽。 

 

 

1、redis节点关键配置

daemonize yes
pidfile /mytest/redis_dev/9001/redis.pid
port 9001
appendonly yes
appendfsync everysec
cluster-enabled yes
cluster-config-file nodes.conf  
cluster-node-timeout 15000

 

 首次配置,强烈建议使用6个节点,这样更能直观的理解redis集群的配置以及优点所在。

 复制成6分,9001,9002,9003,9004,9005,9006(注意改成不同的端口,不同的pid文件,nodes.conf不要理会,redis会自动创建,自动管理)

2、启动各个节点



 

3、使用redis-trib工具 创建集群 

启动成功之后,使用redis自带的工具创建集群

注,这里要安装ruby等工具

(1)、安装ruby

http://jingyan.baidu.com/article/b7001fe173fe9a0e7382dd57.html

(2)、安装ruby gem

https://rubygems.org/pages/download#formats

(3)、安装gem redis

https://rubygems.org/gems/redis/versions/3.2.2

安装过程比较简单,略过。



 

 输入"yes",继续


 

哈希槽已经分配到9001,9002,9003节点中。 

4、使用redis-cli测试


 

注意:这里是使用src/redis-cli -c 命令,才能启动客户端集群操作模式

获取操作测试:



 

从数据中可以看到,客户端是从9002端口进入,当输入set age 27 时,是自动转存到9001节点上,

当输入get age 时,也是从9001节点获取数据

 

5、容错处理测试

手动把9001节点给kill 掉


 

 

 

此时继续操作redis集群


 

自动从原先的9001的从节点9004节点(9001为主节点,9004是9001的从节点)中获取数据,说明9004自动转为主节点

 

 

6、增加节点测试

创建9007节点,启动9007

 

并且把9007节点设为9004的从节点

src/redis-trib.rb add-node --slave 127.0.0.1:9007 127.0.0.1:9004

 

从输出结果中,可以看到9007做为9004的一个复制节点,也就是从节点。

 

 

7、增加一个主节点,重新分片集群

redis-trib.rb reshard 127.0.0.1:9008

 主要是把哈希槽重新分配 

 

8、java 客户端 

貌似只有使用sharedjedis 才可以,spring-data-redis还不支持redis新的集群特性,不知道是不是姿势不对。

package wang.conge.init;

import java.util.HashSet;
import java.util.Set;

import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;

public class SharedRedisClient {
	public static void main(String[] args) {
		Set<HostAndPort> jedisClusterNodes = new HashSet<HostAndPort>();  
        jedisClusterNodes.add(new HostAndPort("127.0.0.1", 9001));  
        
        JedisCluster jedis = new JedisCluster(jedisClusterNodes);
        
        jedis.set("nginx", "yes");
		jedis.set("tomcat", "yes");
		jedis.set("keepalived", "yes");
		jedis.set("vip", "yes");
		jedis.set("redis", "yes");
		jedis.set("mysql", "yes");
		
		String key = jedis.get("redis");
		System.out.println(key);
	}
}

 

9、小结

redis官方提供的集群方案配置太繁琐了,不过性能上也比较强悍,公司还没用到生产,拭目以待吧。

 

© 著作权归作者所有

共有 人打赏支持
haoran_10
粉丝 25
博文 88
码字总数 80846
作品 0
杭州
程序员
加载中

评论(1)

leehark
leehark
请问 有没有在生产环境下使用过redis3.0 cluster? 并发量有多少?遇到什么坑?
美团在Redis上踩过的一些坑-5.redis cluster遇到的一些问题

转载请注明出处哈:http://carlosfu.iteye.com/blog/2254154 由于演讲时间有限,有关Redis-Cluster,演讲者没做太多介绍,简单的介绍了一些Redis-Cluster概念作用和遇到的两个问题,我们在Red...

lirulei90
01/05
0
0
redis 分片集群(cluster)搭建

安装依赖 安装redis 解压压缩包 配置文件 目录结构 其中m1、m2、m3代表集群服务的三个中心,如果要保证高可用还可以配置sentinel。 db为数据文件夹appendonly.aof文件为持久化文件,nodes.c...

千惊万喜
2016/06/29
362
0
redis演练聚集

redis演练(1) 搭建redis服务 redis演练(2) 最全redis命令列表 redis演练(3) redis事务管理 redis演练(4) redis基准测试 redis演练(5) redis持久化 redis演练(6) redis主从模式搭建 redis运维...

randy_shandong
2016/09/11
0
0
技术分享之Redis Cluster那些事儿

前言: 没什么好说的,先前看到兄弟部门的同事们对redis cluster很感兴趣,也在实施redis cluster集群。正好我也有redis cluster的一些管理经验。本着知识要传播要分享的精神,在公司内部做了...

rfyiamcool
06/01
0
0
Redis 3.2.8集群搭建

一、概述 1.1、redis cluster的现状   目前redis支持的cluster特性:   1):节点自动发现   2):slave->master 选举,集群容错   3):Hot resharding:在线分片   4):进群管理:cluster ...

qianghong000
2017/12/20
0
0
多节点 安装redis cluster安装部署-4.0.1

环境 节点数量 IP:172.17.7.11 CPU :12 核 MEM:96G 启动服务数量:6 使用端口:7001~12IP:172.17.7.25 CPU :12 核 MEM:96G 启动服务数量:6 使用端口:7001~12IP:172.17.7.26 CPU :12 ...

kjh2007abc
06/27
0
0
Java之品优购部署_day01(9)

3.2.3 配置集群 (1)修改每个 redis 节点的配置文件 redis.conf 修改运行端口为 7001 (7002 7003 .....) 将 cluster-enabled yes 前的注释去掉(632 行) (2)启动每个 redis 实例 以第一个...

我是小谷粒
07/11
0
0
Redis集群原理、搭建

在实际的生产过程中,单服的redis存在单点的问题,redis通常需要集群的环境。相比单服的redis,集群有以下些好处: 1.容错性 解决在单服redis的单点问题。在一个或多个节点出现宕机的情况下,...

architect刘源源
03/02
0
0
redis集群搭建与验证

生产环境用了redis集群,用了一段时间以来,redis集群还是挺好用的。因此,把在生产环境中学习到的redis集群的运维知识跟大家分享一下。 1: 先安装redis-server 可从官方下载最新http://redi...

鸿弟
2016/08/21
206
0
分布式缓存redis-cluster环境搭建及wishstack调用Jedis

redis集群三种方式 1、Redis官方提供的集群解决方案-Redis-cluster (刚发布差不多一年) 2、 Twemproxy ( twitter贡献的) 使用时间比较长,比较成熟,但是有些功能不支持 3、豌豆尖针对T...

tantexian
2016/08/05
71
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

pbgo: 基于Protobuf的迷你RPC/REST框架

https://www.oschina.net/p/pbgo

chai2010
10分钟前
0
0
rsync工具介绍、常用选项以及通过ssh同步

linux下的文件同步工具 rsync rsync是非常实用的一个同步工具,可以从a机器到b机器传输一个文件,也可以备份数据,系统默认没有这个工具,要使用命令 yum install -y rsync 安装。 rsync的命...

黄昏残影
25分钟前
0
0
OSChina 周四乱弹 —— 表妹要嫁人 舅妈叮嘱……

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @哈哈哈哈哈嗝:一定要听——The Pancakes的单曲《咁咁咁》 《咁咁咁》- The Pancakes 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :...

小小编辑
今天
34
4
流利阅读笔记30-20180719待学习

重磅:让人类得老年痴呆的竟是它? Lala 2018-07-19 1.今日导读 去年奥斯卡最佳动画长片《寻梦环游记》里有一句经典台词:“比死亡更可怕的,是遗忘”。在电影中,年迈的曾祖母会重复说一样的...

aibinxiao
今天
3
0
1.16 Linux机器相互登录

Linux机器之间以密码方式互相登录 运行命令#ssh [ip address],标准命令:#ssh [username]@ip, 如果没有写用户名,则默认为系统当前登录的用户 命令#w查看系统负载,可查看到连接到该主机的...

小丑鱼00
今天
0
0
about git flow

  昨天元芳做了git分支管理规范的分享,为了拓展大家关于git分支的认知,这里我特意再分享这两个关于git flow的链接,大家可以看一下。 Git 工作流程 Git分支管理策略   git flow本质上是...

qwfys
今天
2
0
Linux系统日志文件

/var/log/messages linux系统总日志 /etc/logrotate.conf 日志切割配置文件 参考https://my.oschina.net/u/2000675/blog/908189 dmesg命令 dmesg’命令显示linux内核的环形缓冲区信息,我们可...

chencheng-linux
今天
1
0
MacOS下给树莓派安装Raspbian系统

下载镜像 前往 树莓派官网 下载镜像。 点击 最新版Raspbian 下载最新版镜像。 下载后请,通过 访达 双击解压,或通过 unzip 命令解压。 检查下载的文件 ls -lh -rw-r--r-- 1 dingdayu s...

dingdayu
今天
1
0
spring boot使用通用mapper(tk.mapper) ,id自增和回显等问题

最近项目使用到tk.mapper设置id自增,数据库是mysql。在使用通用mapper主键生成过程中有一些问题,在总结一下。 1、UUID生成方式-字符串主键 在主键上增加注解 @Id @GeneratedValue...

北岩
今天
2
0
告警系统邮件引擎、运行告警系统

告警系统邮件引擎 cd mail vim mail.py #!/usr/bin/env python#-*- coding: UTF-8 -*-import os,sysreload(sys)sys.setdefaultencoding('utf8')import getoptimport smtplibfr......

Zhouliang6
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部