文档章节

玩转redis之redis 分片集群方案与实现

漂泊者及其影子
 漂泊者及其影子
发布于 2016/03/29 17:43
字数 328
阅读 402
收藏 11

一、spring-redis配置


<?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:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
			
		
	<!-- <context:property-placeholder location="classpath:/META-INF/db/data-redis.properties" />   -->
	<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig" >  
    	<property name="maxActive" value="${redis.pool.maxActive}" />  
    	<property name="maxIdle" value="${redis.pool.maxIdle}" />  
    	<property name="maxWait" value="${redis.pool.maxWait}" />  
    	<property name="testOnBorrow" value="${redis.pool.testOnBorrow}" />  
	</bean> 
	<bean id="shardedJedisPool" class="redis.clients.jedis.ShardedJedisPool" >  
    	<constructor-arg index="0" ref="jedisPoolConfig" />  
    	<constructor-arg index="1">  
        	<list>  
            	<bean class="redis.clients.jedis.JedisShardInfo">  
                	<constructor-arg index="0" value="${redis.ip}" />  
                	<constructor-arg index="1" value="${redis.port}" type="int" />  
            	</bean>  
            	<bean class="redis.clients.jedis.JedisShardInfo">  
                	<constructor-arg index="0" value="${redis2.ip}" />  
                	<constructor-arg index="1" value="${redis2.port}" type="int" />  
            	</bean>  
            	<bean class="redis.clients.jedis.JedisShardInfo">  
	                <constructor-arg index="0" value="${redis3.ip}" />  
	                <constructor-arg index="1" value="${redis3.port}" type="int" />  
            	</bean>   
        	</list>  
    	</constructor-arg>  
	</bean>  
</beans>



如上,在shardedJedisPool中增加多个redis分片

二、代码实现

import javax.inject.Inject;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

import com.iflashbuy.base.util.JsonUtil;
import com.iflashbuy.base.util.StringUtil;

import redis.clients.jedis.ShardedJedis;
import redis.clients.jedis.ShardedJedisPool;

@Component
public class RedisOperator {
	private static final Logger log = LoggerFactory.getLogger(RedisOperator.class);

	@Inject
	public ShardedJedisPool shardedJedisPool;
	
	
	public void set(String key, Object obj) {
		String jsonStr = "";
		if (obj instanceof String) {
			jsonStr = (String) obj;
		} else {
			jsonStr = JsonUtil.objectToJsonStr(obj);
		}
		ShardedJedis jedis = shardedJedisPool.getResource();
		jedis.set(key, jsonStr);
	}
	
	
	
	public <T> T get(String key, Class<T> clazz) {
		ShardedJedis jedis = shardedJedisPool.getResource();
		String jsonStr = jedis.get(key);
		if (StringUtil.isNotEmpty(jsonStr)) {
			try {
				return (T) JsonUtil.formJson(jsonStr, clazz);
			} catch (Exception e) {
				log.error("joson转为对象失败:" + e);
				return null;
			}
		} else {
			return null;
		}
	}
	
	
}




© 著作权归作者所有

漂泊者及其影子
粉丝 43
博文 121
码字总数 72105
作品 0
广州
程序员
私信 提问
玩转Redis集群(下)

接上一篇《玩转Redis集群(上)》,我们来继续玩~ Redis集群操作实践 数据的分布性 从上面的操作,你可以看到,当存储某一个数据的时候,会分配一个slot,而这个slot从属于某一个Master,也就...

zfz_linux_boy
2017/03/09
0
0
Redis Sharding方案

Redis Sharding方案 什么是Redis分片 分片(partitioning)就是将你的数据拆分到多个 Redis 实例的过程,这样每个实例将只包含所有键的子集。 分片为何有用 Redis 的分片承担着两个主要目标: ...

秋风醉了
2015/03/25
7.4K
2
高可用的redis集群如何实现

Redis因具有丰富的数据结构和超高的性能以及简单的协议,使其能够很好的作为数据库的上游缓存层。但在大规模的Redis使用过程中,会受限于多个方面:单机内存有限、带宽压力、单点问题、不能动...

花生核
2016/07/09
250
1
Redis集群初步设计

1、需求背景 最近为满足业务推广活动的需求,需要对Redis集群做容灾,刚开始考虑采用最近比较火的开源方案codis。但考虑到可能会有很多坑,暂不推荐使用,作为后期预研方案。 我们之前一直在...

workming
2015/04/24
0
0
这可能是最全的 Redis 集群方案介绍了

这可能是最全的 Redis 集群方案介绍了 原创 2016-06-01 曾健生 运维帮 由于Redis出众的性能,其在众多的移动互联网企业中得到广泛的应用。Redis在3.0版本前只支持单实例模式,虽然现在的服务...

fdhay
2016/06/02
260
0

没有更多内容

加载失败,请刷新页面

加载更多

安全组和云防火墙的区别

前言 熟悉云平台的朋友可能都会注意到这样一个事情:无论公有云还是私有云,创建虚拟机的时候都需要选择安全组,来对虚拟机进行安全防护;有的云平台在VPC里,还能选择防火墙,ZStack在3.6版...

ZStack社区版
38分钟前
3
0
教育性app开发的重要性和好处

在这个精通技术的世界中,流行的app主导着无聊的教育系统。当我们将技术和教育结合在一起时,它将带来当代以及强大的学习资源。因此,将教育移动app集成到您的学习过程中,并根据自己的信念把...

a429011717
39分钟前
4
0
IE6/7/8如何兼容CSS3属性

本文转载于:专业的前端网站➩IE6/7/8如何兼容CSS3属性 最近在工作中总是要求IE8兼容CSS3属性,在网上搜了搜主要是引入了一个htc文件(ie-css3.htc或者PIE.htc。个人认为这两个文件的作用差不...

前端老手
54分钟前
5
0
手把手教你ALLEGRO的约束规则的设置教程!

约束规则的设置 分三步, 定义规则(一、基本约束规则设置:1、线间距设置;2、线宽设置;3、设置过孔;4、区域约束规则设置;5、设置阻抗;6、设置走线的长度范围;7、设置等长:7.1、不过电阻的NET 等...

demyar
56分钟前
5
0
完美解决H5滚动滑动穿透方案:不使用系统滚动

网上有很多黑科技解决这个问题,都不是从根本去解决,例如通过js控制弹出时html加上position:fixed; 弹窗关闭后再去掉该样式,总觉得不太对,像是打补丁。 今天终于找到了滚动穿透的原因和完...

未来cc
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部