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