spring使⽤redis集群配置
上⾯两篇介绍了redis集群的配置合⼀些基本的概念,所以接下来当然是要在项⽬中使⽤咯,redis的java⽀持已经做的⾮常好了,所以我们来试着使⽤这些api来进⾏redis的操作,⾸先我们需要操作redis的架包:
redis.clients jedis 2.7.3
我们需要做的仅仅是在spring配置⽂件中注⼊这些基本类,然后⾃⼰实现dao,下⾯是配置⽂件:
127.0.0.1:26379
上⾯配置好了以后,我们就相当于将redis集群给映射过来了,下来我们只需要做⼀些操作,涉及到数据的CRUD.
package com.yonyou.hotusm.module.nosql.redis;
import redis.clients.jedis.ShardedJedis;//这个接⼝是操作sharedJedis
public interface RedisDataSource {
public abstract ShardedJedis getRedisClient();
public void returnResource(ShardedJedis shardedJedis);
public void returnResource(ShardedJedis shardedJedis,boolean broken);}
实现:
package com.yonyou.hotusm.module.nosql.redis;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Repository;
import redis.clients.jedis.ShardedJedis;
import redis.clients.jedis.ShardedJedisPool;
@Repository(\"redisDataSource\")
public class RedisDataSourceImpl implements RedisDataSource {
private static final Logger log = LoggerFactory.getLogger(RedisDataSourceImpl.class); @Autowired
private ShardedJedisPool shardedJedisPool;
public ShardedJedis getRedisClient() { try {
ShardedJedis shardJedis = shardedJedisPool.getResource(); return shardJedis; } catch (Exception e) {
log.error(\"getRedisClent error\", e); }
return null; }
public void returnResource(ShardedJedis shardedJedis) { shardedJedisPool.close();
//shardedJedisPool.returnResource(shardedJedis); }
public void returnResource(ShardedJedis shardedJedis, boolean broken) { if (broken) {
shardedJedisPool.close();
//shardedJedisPool.returnBrokenResource(shardedJedis); } else {
shardedJedisPool.close();
//shardedJedisPool.returnResource(shardedJedis); } }}
下⾯就是操作jedis的具体类了:
@Repository(\"jedisTemplate\")public class JedisTemplate {
private static final Logger log = LoggerFactory.getLogger(JedisTemplate.class); @Autowired
private RedisDataSource redisDataSource;
public void disconnect() {
ShardedJedis shardedJedis = redisDataSource.getRedisClient(); shardedJedis.disconnect(); }
/**
* 设置单个值 *
* @param key * @param value * @return */
public String set(String key, String value) { String result = null;
ShardedJedis shardedJedis = redisDataSource.getRedisClient(); if (shardedJedis == null) { return result; }
boolean broken = false; try {
result = shardedJedis.set(key, value); } catch (Exception e) { e.printStackTrace();
log.error(e.getMessage(), e); broken = true; } finally {
redisDataSource.returnResource(shardedJedis, broken); }
return result; }
/**
* 获取单个值 *
* @param key * @return
*/
public String get(String key) { String result = null;
ShardedJedis shardedJedis = redisDataSource.getRedisClient(); if (shardedJedis == null) { return result; }
boolean broken = false; try {
result = shardedJedis.get(key);
} catch (Exception e) {
log.error(e.getMessage(), e); broken = true; } finally {
redisDataSource.returnResource(shardedJedis, broken); }
return result; }
真正的还有很多操作,list,set,哈希什么的,我就不把代码贴出来了,看看api就知道了