Redis-インタフェースツールクラス、コンテキストまたはwebでのRedis使用

10881 ワード

redisにはよく使われる方法がたくさんあります.整理してツールに書く方法は、新しいプロジェクトで直接使用することができます.ネット上にもredisのインタフェースの方法がたくさんあります.同じです.接続方法は単機とクラスタの2種類があります.
JArパッケージ依存:jedis-2.8.1.jar     ,    commons-pool2-2.0.jar
手順:
インタフェースの作成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 ;