使用 Jedis操作Redis

1.创建SpringUtils(用来获取指定的bean)

@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.获取单例的Jedis

/**
 * 获取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转换对象)

/**
 * 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;
	}

 

转载于:https://my.oschina.net/u/2930573/blog/776090

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值