Redis在SSM框架的使用(一)

(一)单机版

1、创建一个interface

public interface IRedis {
	String set(String key,String value);
	String get(String key);
	Boolean exists(String key);
	Long expire(String key,int seconds);
	Long ttl(String key);
	Long incr(String key);
	String hget(String key,String field);
	Long hset(String key, String field, String value);
	Long hdel(String key,String... field);
	Boolean hexistes(String key,String field);
	List<String> hvals(String key);
	Long del(String key);
 
}

2、实现接口

package com.aynu.redis.imp; 

import java.util.List; 
import com.aynu.redis.IRedis; 
import redis.clients.jedis.Jedis; 
import redis.clients.jedis.JedisPool; 

public class Redis implements IRedis {
	//jedis连接池文件 
	private JedisPool jedispool; 

	public JedisPool getJedispool() { 
	return jedispool; 
	} 
	public void setJedispool(JedisPool jedispool) { 
	this.jedispool = jedispool; 
	}
	
	@Override 
	public String set(String key, String value) { 
		// TODO Auto-generated method stub
		//从连接池中获得一个连接 
	 	Jedis jedis=jedispool.getResource();
		//直接操作redis String result = jedis.set(key, value);
		//关闭该连接 jedis.close(); 
		return result;
	}
	
	@Override 
	public String get(String key) { 
		// TODO Auto-generated method stub 
		Jedis jedis=jedispool.getResource(); 
	  	String result = jedis.get(key); 
	  	jedis.close(); return result; 
	}
	
	@Override 
	public Boolean exists(String key) {
	    // TODO Auto-generated method stub 
	    Jedis jedis=jedispool.getResource(); 
	    Boolean result = jedis.exists(key); 
	    jedis.close(); return result; 
	} 
	
	@Override 
	public Long expire(String key, int seconds) {
	    // TODO Auto-generated method stub 
	    Jedis jedis=jedispool.getResource(); 
	    Long result = jedis.expire(key, seconds);
	    jedis.close(); return result; 
	}
	
	@Override 
	public Long ttl(String key) {
	    // TODO Auto-generated method stub 
	    Jedis jedis=jedispool.getResource(); 
	    Long result = jedis.ttl(key); 
	    return result; 
	}
	
	Override 
	public Long incr(String key) { 
	    // TODO Auto-generated method stub 
	    Jedis jedis=jedispool.getResource(); 
	    Long result = jedis.incr(key); 
	    jedis.close(); 
	    return result; 
	} 
	
	@Override 
	public String hget(String key, String field) { 
	    // TODO Auto-generated method stub 
	    Jedis jedis=jedispool.getResource(); 
	    String result = jedis.hget(key, field); 
	    jedis.close(); 
	    return result; 
	}
	
	@Override
	public Long hdel(String key, String... field) { 
	    // TODO Auto-generated method stub 
	    Jedis jedis=jedispool.getResource(); 
	    Long result = jedis.hdel(key, field); 
	    jedis.close(); 
	    return result; 
	} 
	
	@Override 
	public Boolean hexistes(String key, String field) { 
	    // TODO Auto-generated method stub 
	    Jedis jedis=jedispool.getResource(); 
	    Boolean result = jedis.hexists(key, field); 
	    jedis.close(); 
	    return result; 
	} 
	
    @Override 
    public List<String> hvals(String key) {
	    // TODO Auto-generated method stub 
	    Jedis jedis=jedispool.getResource();
	    List<String> result = jedis.hvals(key); 
	    jedis.close(); 
	    return result; 
    } 
	
    @Override 
    public Long del(String key) { 
        // TODO Auto-generated method stub 
        Jedis jedis=jedispool.getResource(); 
        Long result = jedis.del(key); jedis.close(); return result; } 
	
        @Override public Long hset(String key, String field, String value) { 
        // TODO Auto-generated method stub 
       	Jedis jedis=jedispool.getResource(); 
       	Long result = jedis.hset(key, field, value); 
       	jedis.close(); 
       	return result; 
    } 
}

3、创建一个spring-redis.xml文件

<bean id="redis" class="com.aynu.redis.imp.Redis">  
     <property name="jedispool" ref="jedispool"/>  
</bean>  
         
<bean id="jedispool" class="redis.clients.jedis.JedisPool">  
     <constructor-arg name="host" value="192.168.146.128"/>  
     <constructor-arg name="port" value="6379"/>  
</bean>

4、在service层使用

策略:查询时,先从redis中查,如果有,直接返回,没有从数据库中查,将查到的结果放到redis中在查询缓存时,和添加缓存时为了防止没有查到报异常而影响整个系统的运行,我们采用try,catch方式进行捕获;

//1.注入上面的接口
@Autowired
private IRedis redis;

//2.去缓存中查找:
try { //去缓存中查,得到的是个json类型数据
	String json = redis.hget("customer", "pageStartIndex");
	//判断是否为空,不为空将json转为list 
	if(! json.isEmpty()) { 
		List<Customer> list=new ArrayList<Customer>(); 
		list=JSONObject.parseArray(json, Customer.class); 
	} 

	return list; 
}catch (Exception e) { 
	// TODO: handle exception 
}


//3.如果缓存中没有,从数据库中查,将结果放入:
redis.hset("customer", "pageStartIndex", customerdata);  
redis.hset("customer", "pageStartIndex", customerdata);  
redis.hset("customer", "pageStartIndex", customerdata);

(二)集群版

1、集群实现类

package com.aynu.redis.imp;
 
import java.util.List;
 
import com.aynu.redis.IRedis;
 
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;
 
public class Cluster implements IRedis {
 
   private JedisCluster jedisCluster;
	
 
	public JedisCluster getJedisCluster() {
		return jedisCluster;
	}
 
	public void setJedisCluster(JedisCluster jedisCluster) {
		this.jedisCluster = jedisCluster;
	}
 
	@Override
	public String set(String key, String value) {
		// TODO Auto-generated method stub
		return jedisCluster.set(key, value);
	}
 
	@Override
	public String get(String key) {
		// TODO Auto-generated method stub
		return jedisCluster.get(key);
	}
 
	@Override
	public Boolean exists(String key) {
		// TODO Auto-generated method stub
		return jedisCluster.exists(key);
	}
 
	@Override
	public Long expire(String key, int seconds) {
		// TODO Auto-generated method stub
		return jedisCluster.expire(key, seconds);
	}
 
	@Override
	public Long ttl(String key) {
		// TODO Auto-generated method stub
		return jedisCluster.ttl(key);
	}
 
	@Override
	public Long incr(String key) {
		// TODO Auto-generated method stub
		return jedisCluster.incr(key);
	}
 
	@Override
	public String hget(String key, String field) {
		// TODO Auto-generated method stub
		return jedisCluster.hget(key, field);
	}
 
	@Override
	public Long hset(String key, String field, String value) {
		// TODO Auto-generated method stub
		return jedisCluster.hset(key, field, value);
	}
 
	@Override
	public Long hdel(String key, String... field) {
		// TODO Auto-generated method stub
		return jedisCluster.hdel(key, field);
	}
 
	@Override
	public Boolean hexistes(String key, String field) {
		// TODO Auto-generated method stub
		return jedisCluster.hexists(key, field);
	}
 
	@Override
	public List<String> hvals(String key) {
		// TODO Auto-generated method stub
		return jedisCluster.hvals(key);
	}
 
	@Override
	public Long del(String key) {
		// TODO Auto-generated method stub
		return jedisCluster.del(key);
	}
 
}

2、配置

<bean id="cluster" class="com.aynu.redis.imp.Cluster">
    <property name="JedisCluster" ref="jedisCluster"/>
</bean>
<bean id="jedisCluster" class="redis.clients.jedis.JedisCluster">
    <constructor-arg name="nodes">
    	<set>
    	    <bean class="redis.clients.jedis.HostAndPort">
    	       <constructor-arg name="host" value="192.168.146.130"/>
    	       <constructor-arg name="port" value="7001"/>
    	    </bean>
    	    <bean class="redis.clients.jedis.HostAndPort">
    	       <constructor-arg name="host" value="192.168.146.130"/>
    	       <constructor-arg name="port" value="7002"/>
    	    </bean>
    	    <bean class="redis.clients.jedis.HostAndPort">
    	       <constructor-arg name="host" value="192.168.146.130"/>
    	       <constructor-arg name="port" value="7003"/>
    	    </bean>
    	    <bean class="redis.clients.jedis.HostAndPort">
    	       <constructor-arg name="host" value="192.168.146.130"/>
    	       <constructor-arg name="port" value="7004"/>
    	    </bean>
    	    <bean class="redis.clients.jedis.HostAndPort">
    	       <constructor-arg name="host" value="192.168.146.130"/>
    	       <constructor-arg name="port" value="7005"/>
    	    </bean>
    	    <bean class="redis.clients.jedis.HostAndPort">
    	       <constructor-arg name="host" value="192.168.146.130"/>
    	       <constructor-arg name="port" value="7006"/>
    	    </bean>    	      
    	</set>
    </constructor-arg>
</bean>

 

转载于:https://my.oschina.net/yunjie/blog/1842780

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值