使用 Jedis操做Redis

1.建立SpringUtils(用來獲取指定的bean)java

@Component
public class SpringUtils implements ApplicationContextAware {
	
	private static ApplicationContext applicationContext = null;

	@Override
	public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
		if (SpringUtils.applicationContext == null) {
			SpringUtils.applicationContext = applicationContext;
		}
	}

	/**
	 *  獲取applicationContext
	 */
	public static ApplicationContext getApplicationContext() {
		return applicationContext;
	}

	/**
	 *  經過name獲取 Bean
	 *  
	 *  @param name			須要獲取bean的name
	 */
	public static Object getBean(String name) {
		return getApplicationContext().getBean(name);
	}

	/**
	 *  經過class獲取Bean
	 *  
	 *  @param clazz		須要獲取bean的class
	 */
	public static <T> T getBean(Class<T> clazz) {
		return getApplicationContext().getBean(clazz);
	}

	/**
	 *  經過name,以及class返回指定的Bean
	 *  
	 * @param name			須要獲取bean的name
	 * @param clazz			須要獲取bean的class
	 */
	public static <T> T getBean(String name, Class<T> clazz) {
		return getApplicationContext().getBean(name, clazz);
	}
}

2.獲取單例的Jedisredis

/**
 * 獲取redis客戶端jedis
 * 
 * @author lshaci
 *
 */
public class JedisUtil {
	
	private JedisUtil() {}
	
	private static class JedisUtilHolder {
		private static Jedis jedis = SpringUtils.getBean(JedisConnectionFactory.class).getShardInfo().createResource();
	}

	/**
	 * 獲取redis客戶端(單例)
	 * 
	 * @return
	 */
	public static Jedis getJedis() {
		return JedisUtilHolder.jedis;
	}
}

3.對redis進行操做(使用fastjson轉換對象)json

/**
 * redis相關操做工具
 * 
 * @author lshaci
 *
 */
public class RedisUtils {
	
	/**
	 * 操做redis客戶端
	 */
	private static Jedis jedis = JedisUtil.getJedis();
	
	/**
	 * 把對象保存到redis中
	 * 
	 * @param key		保存對象的key
	 * @param value		保存的對象
	 */
	public static void set(String key, Object value) {
		jedis.set(JSON.toJSONString(key), JSON.toJSONString(value));
	}
	
	/**
	 * 根據key從redis中取出指定對象
	 * 
	 * @param key		對象的key
	 * @param clazz		對象的類型
	 * @return			key在redis中對應的對象的實例
	 */
	public static <T> T get(String key, Class<T> clazz) {
		String jsonString = jedis.get(JSON.toJSONString(key));
		return JSON.parseObject(jsonString, clazz);
	}
	
	/**
	 * 根據key刪除redis中緩存的對象
	 * 
	 * @param key		須要刪除對象的key
	 */
	public static void del(String key) {
		jedis.del(JSON.toJSONString(key));
	}
	
	/**
	 * 把對象保存到redis的hash表中
	 * 
	 * @param key		hash的key
	 * @param field		對象對應的字段
	 * @param value		保存的對象
	 */
	public static void hSet(String key, String field, Object value) {
		jedis.hset(JSON.toJSONString(key), JSON.toJSONString(field), JSON.toJSONString(value));
	}
	
	/**
	 * 根據key從redis的hash表中取出指定對象
	 * 
	 * @param key		hash的key
	 * @param field		對象對應的字段
	 * @param clazz		對象的類型
	 * @return			key在redis的hash表中對應field的對象實例
	 */
	public static <T> T hGet(String key, String field, Class<T> clazz) {
		String jsonString = jedis.hget(JSON.toJSONString(key), JSON.toJSONString(field));
		return JSON.parseObject(jsonString, clazz);
	}
	
	/**
	 * 獲取模型在redis的hash表中全部的實例
	 * 
	 * @param key		hash的key
	 * @param clazz		對象的類型
	 * @return			key在redis的hash表中對應對象的全部實例集合
	 */
	public static <T> List<T> hGetAll(String key,  Class<T> clazz) {
		Map<String, String> all = jedis.hgetAll(JSON.toJSONString(key));
		Collection<String> values = all.values();
		List<T> ts  = new ArrayList<>();
		for (String jsonString : values) {
			ts.add(JSON.parseObject(jsonString, clazz));
		}
		return ts;
	}
	
	/**
	 * 經過字段在redis指定key的hash表中刪除一個對象
	 * 
	 * @param key		hash的key
	 * @param field		對象對應的字段
	 * @return			刪除成功返回ture,失敗則返回false
	 */
	public static boolean hDel(String key, String field) {
		return jedis.hdel(JSON.toJSONString(key), JSON.toJSONString(field)) == 1;
	}
相關文章
相關標籤/搜索