Redis —— 接口工具类,上下文或web中的Redis使用

        redis有很多常用的方法,整理起来写成工具方法,在新的项目中可以直接使用,网上也有很多redis的接口方法,都是一样的,连接方式有单机和集群两种:

          jar包依赖:jedis-2.8.1.jar     ,    commons-pool2-2.0.jar

      步骤:

        创建接口JedisClient.java:

package com.dgh.jedis.util;
import java.util.List;
public interface JedisClient {
	
	/**  保存数据
	 * @param key
	 * @param value
	 * @return
	 */
	String set(String key, String value);
	
	/**  获取数据
	 * @param key
	 * @return
	 */
	String get(String key);
	
	/**  判断值是否存在
	 * @param key
	 * @return
	 */
	Boolean exists(String key);
	
	
	Long expire(String key, int seconds);
	
	Long ttl(String key);
	
	Long incr(String key);
	
	/**  哈希数据保存
	 * @param key
	 * @param field
	 * @param value
	 * @return
	 */
	Long hset(String key, String field, String value);
	
	/**  哈希数据获取
	 * @param key
	 * @param field
	 * @return
	 */
	String hget(String key, String field);
	
	/**  删除哈希数据
	 * @param key
	 * @param field
	 * @return
	 */
	Long hdel(String key, String... field);
	
	/**  判断值是否存在
	 * @param key
	 * @param field
	 * @return
	 */
	Boolean hexists(String key, String field);
	
	List hvals(String key);
	
	/**  删除
	 * @param key
	 * @return
	 */
	Long del(String key);
}

        单机连接实现类JedisClientPool.java:

package com.dgh.jedis.util;
import java.util.List;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
public class JedisClientPool implements JedisClient {
	private JedisPool jedisPool;
	public JedisPool getJedisPool() {
		return jedisPool;
	}
	public void setJedisPool(JedisPool jedisPool) {
		this.jedisPool = jedisPool;
	}
	@Override
	public String set(String key, String value) {
		Jedis jedis = jedisPool.getResource();
		String result = jedis.set(key, value);
		jedis.close();
		return result;
	}
	@Override
	public String get(String key) {
		Jedis jedis = jedisPool.getResource();
		String result = jedis.get(key);
		jedis.close();
		return result;
	}
	@Override
	public Boolean exists(String key) {
		Jedis jedis = jedisPool.getResource();
		Boolean result = jedis.exists(key);
		jedis.close();
		return result;
	}
	@Override
	public Long expire(String key, int seconds) {
		Jedis jedis = jedisPool.getResource();
		Long result = jedis.expire(key, seconds);
		jedis.close();
		return result;
	}
	@Override
	public Long ttl(String key) {
		Jedis jedis = jedisPool.getResource();
		Long result = jedis.ttl(key);
		jedis.close();
		return result;
	}
	@Override
	public Long incr(String key) {
		Jedis jedis = jedisPool.getResource();
		Long result = jedis.incr(key);
		jedis.close();
		return result;
	}
	@Override
	public Long hset(String key, String field, String value) {
		Jedis jedis = jedisPool.getResource();
		Long result = jedis.hset(key, field, value);
		jedis.close();
		return result;
	}
	@Override
	public String hget(String key, String field) {
		Jedis jedis = jedisPool.getResource();
		String result = jedis.hget(key, field);
		jedis.close();
		return result;
	}
	@Override
	public Long hdel(String key, String... field) {
		Jedis jedis = jedisPool.getResource();
		Long result = jedis.hdel(key, field);
		jedis.close();
		return result;
	}
	@Override
	public Boolean hexists(String key, String field) {
		Jedis jedis = jedisPool.getResource();
		Boolean result = jedis.hexists(key, field);
		jedis.close();
		return result;
	}
	@Override
	public List hvals(String key) {
		Jedis jedis = jedisPool.getResource();
		List result = jedis.hvals(key);
		jedis.close();
		return result;
	}
	@Override
	public Long del(String key) {
		Jedis jedis = jedisPool.getResource();
		Long result = jedis.del(key);
		jedis.close();
		return result;
	}
}

        集群实现类JedisClientCluster.java:

package com.dgh.jedis.util;
import java.util.List;
import redis.clients.jedis.JedisCluster;
public class JedisClientCluster implements JedisClient {
	private JedisCluster jedisCluster;
	public JedisCluster getJedisCluster() {
		return jedisCluster;
	}
	public void setJedisCluster(JedisCluster jedisCluster) {
		this.jedisCluster = jedisCluster;
	}
	@Override
	public String set(String key, String value) {
		return jedisCluster.set(key, value);
	}
	@Override
	public String get(String key) {
		return jedisCluster.get(key);
	}
	@Override
	public Boolean exists(String key) {
		return jedisCluster.exists(key);
	}
	@Override
	public Long expire(String key, int seconds) {
		return jedisCluster.expire(key, seconds);
	}
	@Override
	public Long ttl(String key) {
		return jedisCluster.ttl(key);
	}
	@Override
	public Long incr(String key) {
		return jedisCluster.incr(key);
	}
	@Override
	public Long hset(String key, String field, String value) {
		return jedisCluster.hset(key, field, value);
	}
	@Override
	public String hget(String key, String field) {
		return jedisCluster.hget(key, field);
	}
	@Override
	public Long hdel(String key, String... field) {
		return jedisCluster.hdel(key, field);
	}
	@Override
	public Boolean hexists(String key, String field) {
		return jedisCluster.hexists(key, field);
	}
	@Override
	public List hvals(String key) {
		return jedisCluster.hvals(key);
	}
	@Override
	public Long del(String key) {
		return jedisCluster.del(key);
	}
}

        配置信息redis.xml:



	
	
	
		
	
	
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
    
	
	    
		
		
	
	
	
	
	
	

        创建测试类mainTest.java:

package com.dgh.jedis.util;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;


public class mainTest {

	public static void main(String[] args) {

		//初始化Spring容器
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:redis.xml");
		//从容器中获得JedisClient对象
		JedisClient jedisClient = applicationContext.getBean(JedisClient.class); 
		String REDIS_CONTENT_KEY = "Redis";
		jedisClient.hset(REDIS_CONTENT_KEY, 1 + "",  
        		"Redis配置成功!");  
		String stuMsg = jedisClient.hget(REDIS_CONTENT_KEY, 1 + "");  
		
		System.out.println(stuMsg); 
	}

}

        右键运行此类,测试是否配置成功(前台要打开redis服务器):

[2019-03-21 16:08:48,488] [INFO] [org.springframework.context.support.ClassPathXmlApplicationContext.prepareRefresh:510] - Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@4d591d15: startup date [Thu Mar 21 16:08:48 CST 2019]; root of context hierarchy
[2019-03-21 16:08:48,884] [INFO] [org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions:317] - Loading XML bean definitions from class path resource [redis.xml]
Redis配置成功!

        配置成功!

 

如果想在web项目中注入redis,上面的XML配置文件也不需要改变,加载配置文件后类只需要用注解就可以获取到 JedisClient 实例了:

	@Autowired
	private JedisClient jedisClient ;

 

你可能感兴趣的:(Redis,Redis)