3、Redis工具类 。这里主要是对Redis操作进行了进一步的封装,简化了操作和提高代码重用,感兴趣的同样可以自行读一下,毕竟狗子我也是cv之后再重新读的? 。
@SuppressWarnings(value = https://www.isolves.com/it/cxkf/kj/2022-07-21/{"unchecked", "rawtypes" })@Componentpublic class RedisCache{@Autowiredpublic RedisTemplate redisTemplate;/*** 缓存基本的对象,Integer、String、实体类等* @param key 缓存的键值* @param value 缓存的值*/public void setCacheObject(final String key, final T value){redisTemplate.opsForValue().set(key, value);}/*** 缓存基本的对象,Integer、String、实体类等* @param key 缓存的键值* @param value 缓存的值* @param timeout 时间* @param timeUnit 时间颗粒度*/public void setCacheObject(final String key, final T value, final Integer timeout, final TimeUnit timeUnit){redisTemplate.opsForValue().set(key, value, timeout, timeUnit);}/*** 设置有效时间* @param key Redis键* @param timeout 超时时间* @return true=设置成功;false=设置失败*/public boolean expire(final String key, final long timeout){return expire(key, timeout, TimeUnit.SECONDS);}/*** 设置有效时间* @param key Redis键* @param timeout 超时时间* @param unit 时间单位* @return true=设置成功;false=设置失败*/public boolean expire(final String key, final long timeout, final TimeUnit unit){return redisTemplate.expire(key, timeout, unit);}/*** 获得缓存的基本对象 。* @param key 缓存键值* @return 缓存键值对应的数据*/public T getCacheObject(final String key){ValueOperations operation = redisTemplate.opsForValue();return operation.get(key);}/*** 删除单个对象* @param key*/public boolean deleteObject(final String key){return redisTemplate.delete(key);}/*** 删除集合对象* @param collection 多个对象*/public long deleteObject(final Collection collection){return redisTemplate.delete(collection);}/*** 缓存List数据* @param key 缓存的键值* @param dataList 待缓存的List数据* @return 缓存的对象*/public long setCacheList(final String key, final List dataList){Long count = redisTemplate.opsForList().rightPushAll(key, dataList);return count == null ? 0 : count;}/*** 获得缓存的list对象* @param key 缓存的键值* @return 缓存键值对应的数据*/public List getCacheList(final String key){return redisTemplate.opsForList().range(key, 0, -1);}/*** 缓存Set* @param key 缓存键值* @param dataSet 缓存的数据* @return 缓存数据的对象*/public BoundSetOperations setCacheSet(final String key, final Set dataSet){BoundSetOperations setOperation = redisTemplate.boundSetOps(key);Iterator it = dataSet.iterator();while (it.hasNext()){setOperation.add(it.next());}return setOperation;}/*** 获得缓存的set* @param key* @return*/public Set getCacheSet(final String key){return redisTemplate.opsForSet().members(key);}/*** 缓存Map* @param key* @param dataMap*/public void setCacheMap(final String key, final Map dataMap){if (dataMap != null) {redisTemplate.opsForHash().putAll(key, dataMap);}}/*** 获得缓存的Map* @param key* @return*/public Map getCacheMap(final String key){return redisTemplate.opsForHash().entries(key);}/*** 往Hash中存入数据* @param key Redis键* @param hKey Hash键* @param value 值*/public void setCacheMapValue(final String key, final String hKey, final T value){redisTemplate.opsForHash().put(key, hKey, value);}/*** 获取Hash中的数据* @param key Redis键* @param hKey Hash键* @return Hash中的对象*/public T getCacheMapValue(final String key, final String hKey){HashOperations opsForHash = redisTemplate.opsForHash();return opsForHash.get(key, hKey);}/*** 删除Hash中的数据* @param key* @param hkey*/public void delCacheMapValue(final String key, final String hkey){HashOperations hashOperations = redisTemplate.opsForHash();hashOperations.delete(key, hkey);}/*** 获取多个Hash中的数据* @param key Redis键* @param hKeys Hash键集合* @return Hash对象集合*/public List getMultiCacheMapValue(final String key, final Collection4、fastjson对Redis工具类的配置 。这里有一个问题就是不要使用高版本的fastjson依赖,因为高版本的好像是已经将
ParserConfig.getGlobalInstance().setAutoTypeSupport(true); 去除了,从而后面导致报错 。
public class FastJsonRedisSerializer<T> implements RedisSerializer<T>{public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");private Class<T> clazz;static{ParserConfig.getGlobalInstance().setAutoTypeSupport(true);}public FastJsonRedisSerializer(Class<T> clazz){super();this.clazz = clazz;}@Overridepublic byte[] serialize(T t) throws SerializationException{if (t == null){return new byte[0];}return JSON.toJSONString(t, SerializerFeature.WriteClassName).getBytes(DEFAULT_CHARSET);}@Overridepublic T deserialize(byte[] bytes) throws SerializationException{if (bytes == null || bytes.length <= 0){return null;}String str = new String(bytes, DEFAULT_CHARSET);return JSON.parseobject(str, clazz);}protected JavaType getJavaType(Class<?> clazz){return TypeFactory.defaultInstance().constructType(clazz);}}
推荐阅读
-
炎恩看财经|科技股预期还在吗?,国外不断加码的科技制裁
-
网友|原创塑料兄弟情?张绍刚坦言年轻时嫉妒撒贝宁,还被对方说他有病
-
心理有话|兜兜转转,爱意绵绵,3星座守望旧爱,重拾往日温柔,两周后
-
渲染图|爆款预订!iPhone 14 Pro“紫色”超逼真粉丝渲染图来了
-
健身|一组最真实的健身画面,看看有多少个是真实的你!
-
-
我愛做饭|夏日营养搭配:六个简单易学的家常菜,美味可口,赶快学吧
-
极客时间线 简约三星S10手机壳精选,化繁为简轻奢有范
-
秀美生物|难看又显老,学会3个方法,帮你解决长痘烦恼,脸上痘痘反复长
-
小米虾虾虾虾|400年来无人能续,到明朝时才被朱元璋给补上,宋太祖作诗半首
-
-
生活水玉说|130斤小哥尝试每天在家健身锻炼,坚持30天后,看他的身材转变
-
唐嫣|我瘦了40斤,这8个巨掉秤的减肥小窍门,让你体验到瘦子的快乐
-
博世官网中国官方网站;GNC健安喜钙片有什么功效?
-
创投时报击败红米和魅族!5G 手机诞生“续航王”,5000mAh 堪比充电宝
-
南派三叔|《重启》70集变32集,南派三叔发文:这可能是一部书粉反被剧透的剧
-
「挖贝网」主要产品销售订单基本持平,海川智能2020年一季度盈利731.17万增长30%
-
女性养生|吃完的橘子皮不要扔,女性贴在肚脐上作用太厉害了,用过都夸好
-
-
我是一名高二的美术生,还有一个学期就要集训了,在北京有啥好的画室介绍吗