用jedis访问Redis进行对象存取示例

1.依赖配置:

	<dependency>
	    <groupId>com.alibaba</groupId>
	    <artifactId>fastjson</artifactId>
	    <version>1.2.38</version>
	</dependency>
	
	<dependency>
	    <groupId>redis.clients</groupId>
	    <artifactId>jedis</artifactId>
	</dependency>

配置:

#redis
redis.host=192.168.220.128
redis.port=6379
redis.timeout=3
redis.password=123456
redis.poolMaxTotal=10
redis.poolMaxIdle=10
redis.poolMaxWait=3

@Component
@ConfigurationProperties(prefix="redis")
public class RedisConfig {
    
    
	private String host;
	private int port;
	private int timeout;//秒
	private String password;
	private int poolMaxTotal;
	private int poolMaxIdle;
	private int poolMaxWait;//秒
	public String getHost() {
    
    
		return host;
	}
	public void setHost(String host) {
    
    
		this.host = host;
	}
	public int getPort() {
    
    
		return port;
	}
	public void setPort(int port) {
    
    
		this.port = port;
	}
	public int getTimeout() {
    
    
		return timeout;
	}
	public void setTimeout(int timeout) {
    
    
		this.timeout = timeout;
	}
	public String getPassword() {
    
    
		return password;
	}
	public void setPassword(String password) {
    
    
		this.password = password;
	}
	public int getPoolMaxTotal() {
    
    
		return poolMaxTotal;
	}
	public void setPoolMaxTotal(int poolMaxTotal) {
    
    
		this.poolMaxTotal = poolMaxTotal;
	}
	public int getPoolMaxIdle() {
    
    
		return poolMaxIdle;
	}
	public void setPoolMaxIdle(int poolMaxIdle) {
    
    
		this.poolMaxIdle = poolMaxIdle;
	}
	public int getPoolMaxWait() {
    
    
		return poolMaxWait;
	}
	public void setPoolMaxWait(int poolMaxWait) {
    
    
		this.poolMaxWait = poolMaxWait;
	}
}

2.redispoolFactory


@Service
public class RedisPoolFactory {
    
    

	@Autowired
	RedisConfig redisConfig;
	
	@Bean
	public JedisPool JedisPoolFactory() {
    
    
		JedisPoolConfig poolConfig = new JedisPoolConfig();
		poolConfig.setMaxIdle(redisConfig.getPoolMaxIdle());
		poolConfig.setMaxTotal(redisConfig.getPoolMaxTotal());
		poolConfig.setMaxWaitMillis(redisConfig.getPoolMaxWait() * 1000);
		JedisPool jp = new JedisPool(poolConfig, redisConfig.getHost(), redisConfig.getPort(),
				redisConfig.getTimeout()*1000, redisConfig.getPassword(), 0);
		return jp;
	}
	
}

3.redisservice


@Service
public class RedisService {
    
    
	
	@Autowired
	JedisPool jedisPool;//在上面写了含有@Bean注解的 JedisPool 
	
	/**
	 * 获取当个对象
	 * */
	public <T> T get(KeyPrefix prefix, String key,  Class<T> clazz) {
    
    
		 Jedis jedis = null;
		 try {
    
    
			 jedis =  jedisPool.getResource();
			 //生成真正的key
			 String realKey  = prefix.getPrefix() + key;
			 String  str = jedis.get(realKey);
			 T t =  stringToBean(str, clazz);
			 return t;
		 }finally {
    
    
			  returnToPool(jedis);
		 }
	}
	
	/**
	 * 设置对象
	 * */
	public <T> boolean set(KeyPrefix prefix, String key,  T value) {
    
    
		 Jedis jedis = null;
		 try {
    
    
			 jedis =  jedisPool.getResource();
			 String str = beanToString(value);
			 if(str == null || str.length() <= 0) {
    
    
				 return false;
			 }
			//生成真正的key
			 String realKey  = prefix.getPrefix() + key;
			 int seconds =  prefix.expireSeconds();
			 if(seconds <= 0) {
    
    
				 jedis.set(realKey, str);
			 }else {
    
    
				 jedis.setex(realKey, seconds, str);
			 }
			 return true;
		 }finally {
    
    
			  returnToPool(jedis);
		 }
	}
	
	/**
	 * 判断key是否存在
	 * */
	public <T> boolean exists(KeyPrefix prefix, String key) {
    
    
		 Jedis jedis = null;
		 try {
    
    
			 jedis =  jedisPool.getResource();
			//生成真正的key
			 String realKey  = prefix.getPrefix() + key;
			return  jedis.exists(realKey);
		 }finally {
    
    
			  returnToPool(jedis);
		 }
	}
	
	/**
	 * 增加值
	 * */
	public <T> Long incr(KeyPrefix prefix, String key) {
    
    
		 Jedis jedis = null;
		 try {
    
    
			 jedis =  jedisPool.getResource();
			//生成真正的key
			 String realKey  = prefix.getPrefix() + key;
			return  jedis.incr(realKey);
		 }finally {
    
    
			  returnToPool(jedis);
		 }
	}
	
	/**
	 * 减少值
	 * */
	public <T> Long decr(KeyPrefix prefix, String key) {
    
    
		 Jedis jedis = null;
		 try {
    
    
			 jedis =  jedisPool.getResource();
			//生成真正的key
			 String realKey  = prefix.getPrefix() + key;
			return  jedis.decr(realKey);
		 }finally {
    
    
			  returnToPool(jedis);
		 }
	}
	
	private <T> String beanToString(T value) {
    
    
		if(value == null) {
    
    
			return null;
		}
		Class<?> clazz = value.getClass();
		if(clazz == int.class || clazz == Integer.class) {
    
    
			 return ""+value;
		}else if(clazz == String.class) {
    
    
			 return (String)value;
		}else if(clazz == long.class || clazz == Long.class) {
    
    
			return ""+value;
		}else {
    
    
			return JSON.toJSONString(value);
		}
	}

	@SuppressWarnings("unchecked")
	private <T> T stringToBean(String str, Class<T> clazz) {
    
    
		if(str == null || str.length() <= 0 || clazz == null) {
    
    
			 return null;
		}
		if(clazz == int.class || clazz == Integer.class) {
    
    
			 return (T)Integer.valueOf(str);
		}else if(clazz == String.class) {
    
    
			 return (T)str;
		}else if(clazz == long.class || clazz == Long.class) {
    
    
			return  (T)Long.valueOf(str);
		}else {
    
    
			return JSON.toJavaObject(JSON.parseObject(str), clazz);
		}
	}

	private void returnToPool(Jedis jedis) {
    
    
		 if(jedis != null) {
    
    
			 jedis.close();
		 }
	}

}

猜你喜欢

转载自blog.csdn.net/qq_41358574/article/details/121716021