redis集群

ubuntu 安装 redis集群

一曲冷凌霜 提交于 2020-04-06 20:47:03
计划部署三个虚拟机 三个master节点 三个slave节点: IP:192.168.26.133 port:7133(master) port: 8133(slave) IP: 192.168.26.134 port: 7134(master) port: 8134(slave) IP: 192.168.26.135 port: 7135(master) port: 8135(slave) 统一安装目录: /home/develop/redis 安装需要的包 gcc tcl sudo apt-get install gcc sudo apt-get install tcl 创建目录 redis-master redis-slave mkdir redis-master mkdir redis-slave 下载redis-3.0.3 wget http://download.redis.io/releases/redis-3.0.3.tar.gz tar -zxvf redis-3.0.3.tar.gz 192.168.26.133: mkdir -p /home/develop/redis/cluster/7133 mkdir -p /home/develop/redis/cluster/8133 192.168.26.134: mkdir -p /home/develop

一步步实现redis+sentinel双机热备

时光总嘲笑我的痴心妄想 提交于 2020-03-01 12:57:29
前言 前些天一直在忙线上环境部署的事情,初步想的是,nginx(keepalive双机热备)+3(tomcat)+2redis( 双机热备 ),但是后来由于阿里云服务器经典网络不提供虚拟IP,无法使用keepalive,nginx双机热备只能暂时先放弃,退而求其次,采用nginx+3tomcat+2redis(双机热备)。nginx+tomcat由于之前配置过,所以重点就落在redis双机热备上,毕竟是线上系统,适当的抗灾能力还是需要的,咱可不能像测试系统那么去玩,否则黑锅就有的背了,毕竟码代码赚点生活费也不容易。 在网上也查了一些资料,redis集群实现大概有以下几种方式: 1.redis-cluster,官方提供的集群搭建方案(过于重量级,比较适合后期数据量较大的时候的使用) 2.redis+keepalive(由于我们使用的阿里云服务器不支持虚拟IP,所以这套方案也就夭折了) 3.redis+zookeeper(需要引入zookeeper,对现有代码变动较大) 4.redis+sentinel(redis自带监控中间件)(代码变动小,配置少,而且能满足双机热备的需求) 基于我们目前的情况以及需求,经过初略对比,我们团队决定选用第四种方案redis+sentinel实现双机热备。 准备工作 1.安装redis-001(主) $ wget http://download

Jedis cluster集群初始化源码剖析

我只是一个虾纸丫 提交于 2019-12-03 07:08:57
在项目中我们经常使用spring-data-redis来操作Redis,它封装了 Jedis 客户端来与Redis服务器进行各种命令操作。由于最近用到了Redis Cluster集群功能,这里就分析总结一下Jedis cluster集群初始化主要过程及源码。 环境 jar版本: spring-data-redis-1.8.4-RELEASE.jar、jedis-2.9.0.jar 测试环境: Redis 3.2.8,八个集群节点 applicationContext-redis-cluster.xml 配置文件: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd"> <!--

Jedis cluster命令执行流程剖析

房东的猫 提交于 2019-12-01 22:49:15
在Redis Cluster集群模式下,由于key分布在各个节点上,会造成无法直接实现mget、sInter等功能。因此,无论我们使用什么客户端来操作Redis,都要考虑单一key命令操作、批量key命令操作和多节点命令操作的情况,以及效率问题。 在之前的文章中剖析了 Jedis cluster集群初始化源码 ,分析了源码之后可以得知,在Jedis中,使用的是JedisClusterConnection集群连接类来与Redis集群节点进行命令交互,它使用装饰模式对JedisCluster命令执行类进行了一层包装,同时对这三种不同类型的命令操作做了分类处理。 下面就看下JedisClusterConnection类中,如何实现这三种类型的key命令操作。在这里只列举一些典型的命令进行说明。本文基于spring-data-redis-1.8.4-RELEASE.jar和jedis-2.9.0.jar进行源码剖析,Redis版本为Redis 3.2.8。 单一key命令操作 对于单一命令操作,常用的就是get、set了。在JedisClusterConnection类中,get方法的实现如下: public byte[] get(byte[] key) { try { return cluster.get(key); } catch (Exception ex) { throw