大家好,我是中恒。工作中我们经常使用到自定义的开发工具类,本文就列举几个中恒在实际工作中常用的几个工具类,供弟兄们参考。如果本文对您有帮助,欢迎关注、点赞或分享您在工作中经常使用到的工具类。
日期处理
public class DateUtils { // 日志 private static final Logger logger = Logger.getLogger(DateUtils.class); /** * 时间格式(yyyy-MM-dd) */ public final static String DATE_PATTERN = "yyyy-MM-dd"; /** * 无分隔符日期格式 "yyyyMMddHHmmssSSS" */ public static String DATE_TIME_PATTERN_YYYY_MM_DD_HH_MM_SS_SSS = "yyyyMMddHHmmssSSS"; /** * 时间格式(yyyy-MM-dd HH:mm:ss) */ public final static String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss"; private static String[] parsePatterns = {"yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM", "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy" + "/MM", "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM"}; // 日期转换格式数组 public static String[][] regularExp = new String[][]{ // 默认格式 {"\\d{4}-((([0][1,3-9]|[1][0-2]|[1-9])-([0-2]\\d|[3][0,1]|[1-9]))|((02|2)-(([1-9])|[0-2]\\d)))\\s+([0,1]\\d|[2][0-3]|\\d):([0-5]\\d|\\d):([0-5]\\d|\\d)", DATE_TIME_PATTERN}, // 仅日期格式 年月日 {"\\d{4}-((([0][1,3-9]|[1][0-2]|[1-9])-([0-2]\\d|[3][0,1]|[1-9]))|((02|2)-(([1-9])|[0-2]\\d)))", DATE_PATTERN}, // 带毫秒格式 {"\\d{4}((([0][1,3-9]|[1][0-2]|[1-9])([0-2]\\d|[3][0,1]|[1-9]))|((02|2)(([1-9])|[0-2]\\d)))([0,1]\\d|[2][0-3])([0-5]\\d|\\d)([0-5]\\d|\\d)\\d{1,3}", DATE_TIME_PATTERN_YYYY_MM_DD_HH_MM_SS_SSS}}; public static String format(Date date) { return format(date, DATE_PATTERN); } public static String format(Date date, String pattern) { if (date != null) { SimpleDateFormat df = new SimpleDateFormat(pattern); return df.format(date); } return null; } public static String timeToStr(Long time, String pattern) { SimpleDateFormat dateFormat = new SimpleDateFormat(pattern); if (time.toString().length() < 13) { time = time * 1000L; } Date date = new Date(time); String value = dateFormat.format(date); return value; } public static long strToTime(String timeStr) { Date time = strToDate(timeStr); return time.getTime() / 1000; } /** * 转换为时间类型格式 * @param strDate 日期 * @return */ public static Date strToDate(String strDate) { try { String strType = getDateFormat(strDate); SimpleDateFormat sf = new SimpleDateFormat(strType); return new Date((sf.parse(strDate).getTime())); } catch (Exception e) { return null; } } /** * 根据传入的日期格式字符串,获取日期的格式 * @return 秒 */ public static String getDateFormat(String date_str) { String style = null; if (StringUtils.isEmpty(date_str)) { return null; } boolean b = false; for (int i = 0; i < regularExp.length; i++) { b = date_str.matches(regularExp[i][0]); if (b) { style = regularExp[i][1]; } } if (StringUtils.isEmpty(style)) { logger.info("date_str:" + date_str); logger.info("日期格式获取出错,未识别的日期格式"); } return style; } /** * 将字符串类型的转换成Date类型 * @param dateStr 字符串类型的日期 yyyy-MM-dd * @return Date类型的日期 * @throws ParseException */ public static Date convertStringToDate(String dateStr) { // 返回的日期 Date resultDate = null; try { // 日期格式转换 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); resultDate = sdf.parse(dateStr); } catch (ParseException e) { e.printStackTrace(); } return resultDate; } /** * 日期型字符串转化为日期 格式 */ public static Date parseDate(Object str) { if (str == null) { return null; } try { return org.apache.commons.lang3.time.DateUtils.parseDate(str.toString(), parsePatterns); } catch (ParseException e) { return null; } }}
Base64加密和解密
public class Base64Utils { /** * 加密 * @param str * @return */ public static String encode(String str) { Base64.Encoder encoder = Base64.getEncoder(); byte[] b = str.getBytes(StandardCharsets.UTF_8); return encoder.encodeToString(b); } /** * 解密 * @param s * @return */ public static String decode(String s) { Base64.Decoder decoder = Base64.getDecoder(); return new String(decoder.decode(s), StandardCharsets.UTF_8); }}
Bean工具类
public class BeanUtils extends org.springframework.beans.BeanUtils { /** * 默认忽略字段
*/ private static String[] IGNORE_PROPERTIES = {"createUser", "createTime"}; /** * 重写copyProperties,NULL值,可以拷贝 * @param source 拷贝元实体 * @param target 拷贝目标实体 * @throws BeansException 抛出异常 */ public static void copyProperties(Object source, Object target, String[] ignoreList) throws BeansException { Assert.notNull(source, "Source must not be null"); Assert.notNull(target, "Target must not be null"); List
ignorePropertyList = new ArrayList
(); ignorePropertyList.addAll(Arrays.asList(IGNORE_PROPERTIES)); // 传入的忽略数组非空扩展忽略数组 if (ignoreList != null && ignoreList.length != 0) { ignorePropertyList.addAll(Arrays.asList(ignoreList)); } Class
actualEditable = target.getClass(); PropertyDescriptor[] targetPds = getPropertyDescriptors(actualEditable); for (PropertyDescriptor targetPd : targetPds) { if (targetPd.getWriteMethod() != null) { PropertyDescriptor sourcePd = getPropertyDescriptor(source.getClass(), targetPd.getName()); if (sourcePd != null && sourcePd.getReadMethod() != null && !ignorePropertyList.contains(targetPd.getName())) { try { Method readMethod = sourcePd.getReadMethod(); if (!Modifier.isPublic(readMethod.getDeclaringClass().getModifiers())) { readMethod.setAccessible(true); } Object value = readMethod.invoke(source); // 这里判断value是否为空,过滤Integer类型字段 当然这里也能进行一些特殊要求的处理 例如绑定时格式转换等等 // if (value != null && // !"java.lang.Integer".equals(readMethod.getReturnType().getName())) { // if (value != null && !".equals(value)) { Method writeMethod = targetPd.getWriteMethod(); if (!Modifier.isPublic(writeMethod.getDeclaringClass().getModifiers())) { writeMethod.setAccessible(true); } writeMethod.invoke(target, value); // } } catch (Throwable ex) { throw new FatalBeanException("Could not copy properties '" + targetPd.getName() + "' from source to target", ex); } } } } } /** * 重写copyProperties,忽略NULL值 * @param source * @param target * @throws BeansException */ public static void copyProperties(Object source, Object target) throws BeansException { Assert.notNull(source, "Source must not be null"); Assert.notNull(target, "Target must not be null"); Class
actualEditable = target.getClass(); PropertyDescriptor[] targetPds = getPropertyDescriptors(actualEditable); for (PropertyDescriptor targetPd : targetPds) { if (targetPd.getWriteMethod() != null) { PropertyDescriptor sourcePd = getPropertyDescriptor(source.getClass(), targetPd.getName()); if (sourcePd != null && sourcePd.getReadMethod() != null) { try { Method readMethod = sourcePd.getReadMethod(); if (!Modifier.isPublic(readMethod.getDeclaringClass().getModifiers())) { readMethod.setAccessible(true); } Object value = readMethod.invoke(source); // 这里判断value是否为空,过滤Integer类型字段 当然这里也能进行一些特殊要求的处理 例如绑定时格式转换等等 // if (value != null && !"java.lang.Integer".equals(readMethod.getReturnType().getName())) { if (value != null && !".equals(value)) { Method writeMethod = targetPd.getWriteMethod(); if (!Modifier.isPublic(writeMethod.getDeclaringClass().getModifiers())) { writeMethod.setAccessible(true); } writeMethod.invoke(target, value); } } catch (Throwable ex) { throw new FatalBeanException("Could not copy properties '" + targetPd.getName() + "' from source to target", ex); } } } } } /** * bean 转为map * @param obj bean对象 * @param isAllowNull 空字段是否转换 false 不转换 * @return map值 */ public static Map
bean2Map(Object obj, boolean isAllowNull) { if (obj == null) { return null; } Map
map = new HashMap
(); try { BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass()); PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); for (PropertyDescriptor property : propertyDescriptors) { String key = property.getName(); // 过滤class属性 if (!key.equals("class")) { // 得到property对应的getter方法 Method getter = property.getReadMethod(); Object value = getter.invoke(obj); if (isAllowNull || value != null && !value.toString().isEmpty()) { map.put(key, value); } } } } catch (Exception e) { System.out.println("transBean2Map Error " + e); } return map; } /** * map转bean * @param targetMap 被转化的map * @param obj 对象 */ public static void map2Bean(Map
targetMap, Object obj) { Map
map = new HashMap
(); for (String key : targetMap.keySet()) { Object value = targetMap.get(key); map.put(StringUtils.lineToHump(key), value); } try { BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass()); PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); for (PropertyDescriptor property : propertyDescriptors) { String key = property.getName(); if (map.containsKey(key)) { try { Object value = map.get(key); // 得到property对应的setter方法 Method setter = property.getWriteMethod(); setter.invoke(obj, value); } catch (Exception e) { throw new RuntimeException("实体转换错误:" + key); } } } } catch (Exception e) { e.getStackTrace(); throw new RuntimeException("数据转换异常!"); } }}
cookie处理工具类
public class CookieUtils { /** * 得到Cookie的值, 不编码 * @param request * @param cookieName * @return */ public static String getCookieValue(HttpServletRequest request, String cookieName) { return getCookieValue(request, cookieName, false); } /** * 得到Cookie的值, * @param request * @param cookieName * @return */ public static String getCookieValue(HttpServletRequest request, String cookieName, boolean isDecoder) { Cookie[] cookieList = request.getCookies(); if (cookieList == null || cookieName == null) { return null; } String retValue = null; try { for (int i = 0; i < cookieList.length; i++) { if (cookieList[i].getName().equals(cookieName)) { if (isDecoder) { retValue = URLDecoder.decode(cookieList[i].getValue(), "UTF-8"); } else { retValue = cookieList[i].getValue(); } break; } } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return retValue; } /** * 得到Cookie的值, * @param request * @param cookieName * @return */ public static String getCookieValue(HttpServletRequest request, String cookieName, String encodeString) { Cookie[] cookieList = request.getCookies(); if (cookieList == null || cookieName == null) { return null; } String retValue = null; try { for (int i = 0; i < cookieList.length; i++) { if (cookieList[i].getName().equals(cookieName)) { retValue = URLDecoder.decode(cookieList[i].getValue(), encodeString); break; } } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return retValue; } /** * 设置Cookie的值 不设置生效时间默认浏览器关闭即失效,也不编码 */ public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName, String cookieValue) { setCookie(request, response, cookieName, cookieValue, -1); } /** * 设置Cookie的值 在指定时间内生效,但不编码 */ public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName, String cookieValue, int cookieMaxage) { setCookie(request, response, cookieName, cookieValue, cookieMaxage, false); } /** * 设置Cookie的值 不设置生效时间,但编码 */ public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName, String cookieValue, boolean isEncode) { setCookie(request, response, cookieName, cookieValue, -1, isEncode); } /** * 设置Cookie的值 在指定时间内生效, 编码参数 */ public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName, String cookieValue, int cookieMaxage, boolean isEncode) { doSetCookie(request, response, cookieName, cookieValue, cookieMaxage, isEncode); } /** * 设置Cookie的值 在指定时间内生效, 编码参数(指定编码) */ public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName, String cookieValue, int cookieMaxage, String encodeString) { doSetCookie(request, response, cookieName, cookieValue, cookieMaxage, encodeString); } /** * 删除Cookie带cookie域名 */ public static void deleteCookie(HttpServletRequest request, HttpServletResponse response, String cookieName) { doSetCookie(request, response, cookieName, ", -1, false); } /** * 设置Cookie的值,并使其在指定时间内生效 * @param cookieMaxage cookie生效的最大秒数 */ public static final void doSetCookie(HttpServletRequest request, HttpServletResponse response, String cookieName, String cookieValue, int cookieMaxage, boolean isEncode) { try { if (cookieValue == null) { cookieValue = "; } else if (isEncode) { cookieValue = URLEncoder.encode(cookieValue, "utf-8"); } Cookie cookie = new Cookie(cookieName, cookieValue); if (cookieMaxage > 0) { cookie.setMaxAge(cookieMaxage); } String domainName = getDomainName(request); cookie.setDomain(domainName); cookie.setPath("/"); response.addCookie(cookie); } catch (Exception e) { e.printStackTrace(); } } /** * 设置Cookie的值,并使其在指定时间内生效 * @param cookieMaxage cookie生效的最大秒数 */ public static final void doSetCookie(HttpServletRequest request, HttpServletResponse response, String cookieName, String cookieValue, int cookieMaxage, String encodeString) { try { if (cookieValue == null) { cookieValue = "; } else { cookieValue = URLEncoder.encode(cookieValue, encodeString); } Cookie cookie = new Cookie(cookieName, cookieValue); if (cookieMaxage > 0) { cookie.setMaxAge(cookieMaxage); } if (null != request) {// 设置域名的cookie String domainName = getDomainName(request); cookie.setDomain(domainName); } cookie.setPath("/"); response.addCookie(cookie); } catch (Exception e) { e.printStackTrace(); } } /** * 得到cookie的域名 */ private static final String getDomainName(HttpServletRequest request) { String domainName = null; String serverName = request.getRequestURL().toString(); if (serverName == null || serverName.equals(")) { domainName = "; } else { serverName = serverName.toLowerCase(); serverName = serverName.substring(7); final int end = serverName.indexOf("/"); serverName = serverName.substring(0, end); final String[] domains = serverName.split("\\."); int len = domains.length; if (len > 3) { // www.xxx.com.cn domainName = "." + domains[len - 3] + "." + domains[len - 2] + "." + domains[len - 1]; } else if (len <= 3 && len > 1) { // xxx.com or xxx.cn domainName = "." + domains[len - 2] + "." + domains[len - 1]; } else { domainName = serverName; } } if (domainName != null && domainName.indexOf(":") > 0) { String[] ary = domainName.split("\\:"); domainName = ary[0]; } return domainName; }}
ID 生成工具类
public class IdUtils { /** * 主要功能:生成流水号 yyyyMMddHHmmssSSS + 3位随机数 * 注意事项:无 * @return 流水号 */ public static String createIdByDate() { // 精确到毫秒 SimpleDateFormat fmt = new SimpleDateFormat("(yyyyMMddHHmmssSSS)"); String suffix = fmt.format(new Date()); suffix = suffix + "-" + Math.round((Math.random() * 100000)); return suffix; } /** * 主要功能:生成uuid * 注意事项:无 * @return uuid 32 位 */ public static String createIdbyUUID() { return UUID.randomUUID().toString().replaceAll("-", "); } /** * 获取随机UUID * @return 随机UUID */ public static String randomUUID() { return UUID.randomUUID().toString(); } /** * 简化的UUID,去掉了横线 * @return 简化的UUID,去掉了横线 */ public static String simpleUUID() { return UUID.randomUUID().toString(true); } /** * 获取随机UUID,使用性能更好的ThreadLocalRandom生成UUID * @return 随机UUID */ public static String fastUUID() { return UUID.fastUUID().toString(); } /** * 简化的UUID,去掉了横线,使用性能更好的ThreadLocalRandom生成UUID * @return 简化的UUID,去掉了横线 */ public static String fastSimpleUUID() { return UUID.fastUUID().toString(true); }}
Redis工具类
@Componentpublic class RedisUtils { private Logger log = LoggerFactory.getLogger(this.getClass()); /** * 默认编码 */ private static final Charset DEFAULT_CHARSET = StandardCharsets.UTF_8; /** * key序列化 */ private static final StringRedisSerializer STRING_SERIALIZER = new StringRedisSerializer(); /** * value 序列化 */ private static final JdkSerializationRedisSerializer OBJECT_SERIALIZER = new JdkSerializationRedisSerializer(); /** * Spring Redis Template */ private RedisTemplate
redisTemplate; /** * spring自动调用注入redisTemplate */ public RedisUtils(RedisTemplate
redisTemplate) { this.redisTemplate = redisTemplate; //设置序列化器 this.redisTemplate.setKeySerializer(STRING_SERIALIZER); this.redisTemplate.setValueSerializer(OBJECT_SERIALIZER); this.redisTemplate.setHashKeySerializer(STRING_SERIALIZER); this.redisTemplate.setHashValueSerializer(OBJECT_SERIALIZER); } /** * 获取链接工厂 */ public RedisConnectionFactory getConnectionFactory() { return this.redisTemplate.getConnectionFactory(); } /** * 获取 RedisTemplate对象 */ public RedisTemplate
getRedisTemplate() { return redisTemplate; } /** * 清空DB * @param node redis 节点 */ public void flushDB(RedisClusterNode node) { this.redisTemplate.opsForCluster().flushDb(node); } /** * 添加到带有 过期时间的 缓存 * @param key redis主键 * @param value 值 * @param time 过期时间(单位秒) */ public void setExpire(final byte[] key, final byte[] value, final long time) { redisTemplate.execute((RedisCallback
) connection -> { connection.setEx(key, time, value); log.debug("[redisTemplate redis]放入 缓存 url:{} ========缓存时间为{}秒", key, time); return 1L; }); } /** * 添加到带有 过期时间的 缓存 * @param key redis主键 * @param value 值 * @param time 过期时间(单位秒) */ public void setExpire(final String key, final Object value, final long time) { redisTemplate.execute((RedisCallback
) connection -> { RedisSerializer
serializer = getRedisSerializer(); byte[] keys = serializer.serialize(key); byte[] values = OBJECT_SERIALIZER.serialize(value); connection.setEx(keys, time, values); return 1L; }); } /** * 一次性添加数组到 过期时间的 缓存,不用多次连接,节省开销 * @param keys redis主键数组 * @param values 值数组 * @param time 过期时间(单位秒) */ public void setExpire(final String[] keys, final Object[] values, final long time) { redisTemplate.execute((RedisCallback
) connection -> { RedisSerializer
serializer = getRedisSerializer(); for (int i = 0; i < keys.length; i++) { byte[] bKeys = serializer.serialize(keys[i]); byte[] bValues = OBJECT_SERIALIZER.serialize(values[i]); connection.setEx(bKeys, time, bValues); } return 1L; }); } /** * 一次性添加数组到 过期时间的 缓存,不用多次连接,节省开销 * @param keys the keys * @param values the values */ public void set(final String[] keys, final Object[] values) { redisTemplate.execute((RedisCallback
) connection -> { RedisSerializer
serializer = getRedisSerializer(); for (int i = 0; i < keys.length; i++) { byte[] bKeys = serializer.serialize(keys[i]); byte[] bValues = OBJECT_SERIALIZER.serialize(values[i]); connection.set(bKeys, bValues); } return 1L; }); } /** * 添加到缓存 * * @param key the key * @param value the value */ public void set(final String key, final Object value) { redisTemplate.execute((RedisCallback
) connection -> { RedisSerializer
serializer = getRedisSerializer(); byte[] keys = serializer.serialize(key); byte[] values = OBJECT_SERIALIZER.serialize(value); connection.set(keys, values); log.debug("[redisTemplate redis]放入 缓存 url:{}", key); return 1L; }); } /** * 查询在这个时间段内即将过期的key * @param key the key * @param time the time * @return the list */ public List
willExpire(final String key, final long time) { final List
keysList = new ArrayList<>(); redisTemplate.execute((RedisCallback
>) connection -> { Set
keys = redisTemplate.keys(key + "*"); for (String key1 : keys) { Long ttl = connection.ttl(key1.getBytes(DEFAULT_CHARSET)); if (0 <= ttl && ttl <= 2 * time) { keysList.add(key1); } } return keysList; }); return keysList; } /** * 查询在以keyPatten的所有 key * * @param keyPatten the key patten * @return the set */ public Set
keys(final String keyPatten) { return redisTemplate.execute((RedisCallback
>) connection -> redisTemplate.keys(keyPatten + "*")); } /** * 根据key获取对象 * * @param key the key * @return the byte [ ] */ public byte[] get(final byte[] key) { byte[] result = redisTemplate.execute((RedisCallback
) connection -> connection.get(key)); log.debug("[redisTemplate redis]取出 缓存 url:{} ", key); return result; } /** * 根据key获取对象 * * @param key the key * @return the string */ public Object get(final String key) { Object resultStr = redisTemplate.execute((RedisCallback
) connection -> { RedisSerializer
serializer = getRedisSerializer(); byte[] keys = serializer.serialize(key); byte[] values = connection.get(keys); return OBJECT_SERIALIZER.deserialize(values); }); log.debug("[redisTemplate redis]取出 缓存 url:{} ", key); return resultStr; } /** * 根据key获取对象 * @param keyPatten the key patten * @return the keys values */ public Map
getKeysValues(final String keyPatten) { log.debug("[redisTemplate redis] getValues() patten={} ", keyPatten); return redisTemplate.execute((RedisCallback
>) connection -> { RedisSerializer
serializer = getRedisSerializer(); Map
maps = new HashMap<>(16); Set
keys = redisTemplate.keys(keyPatten + "*"); if (CollectionUtils.isNotEmpty(keys)) { for (String key : keys) { byte[] bKeys = serializer.serialize(key); byte[] bValues = connection.get(bKeys); Object value = OBJECT_SERIALIZER.deserialize(bValues); maps.put(key, value); } } return maps; }); } /** * Ops for hash hash operations. * * @return the hash operations */ public HashOperations
opsForHash() { return redisTemplate.opsForHash(); } /** * 对HashMap操作 * * @param key the key * @param hashKey the hash key * @param hashValue the hash value */ public void putHashValue(String key, String hashKey, Object hashValue) { //log.debug("[redisTemplate redis] putHashValue() key={},hashKey={},hashValue={} ", key, hashKey, hashValue); opsForHash().put(key, hashKey, hashValue); } /** * 获取单个field对应的值 * * @param key the key * @param hashKey the hash key * @return the hash values */ public Object getHashValues(String key, String hashKey) { log.debug("[redisTemplate redis] getHashValues() key={},hashKey={}", key, hashKey); return opsForHash().get(key, hashKey); } /** * 根据key值删除 * * @param key the key * @param hashKeys the hash keys */ public void delHashValues(String key, Object... hashKeys) { log.debug("[redisTemplate redis] delHashValues() key={}", key); opsForHash().delete(key, hashKeys); } /** * key只匹配map * * @param key the key * @return the hash value */ public Map
getHashValue(String key) { log.debug("[redisTemplate redis] getHashValue() key={}", key); return opsForHash().entries(key); } /** * 批量添加 * * @param key the key * @param map the map */ public void putHashValues(String key, Map
map) { opsForHash().putAll(key, map); } /** * 集合数量 * * @return the long */ public long dbSize() { return redisTemplate.execute(RedisServerCommands::dbSize); } /** * 清空redis存储的数据 * * @return the string */ public String flushDB() { return redisTemplate.execute((RedisCallback
) connection -> { connection.flushDb(); return "ok"; }); } /** * 判断某个主键是否存在 * * @param key the key * @return the boolean */ public boolean exists(final String key) { return redisTemplate.execute((RedisCallback
) connection -> connection.exists(key.getBytes(DEFAULT_CHARSET))); } /** * 删除key * * @param keys the keys * @return the long */ public long del(final String... keys) { return redisTemplate.execute((RedisCallback
) connection -> { long result = 0; for (String key : keys) { result = connection.del(key.getBytes(DEFAULT_CHARSET)); } return result; }); } /** * 获取 RedisSerializer * * @return the redis serializer */ protected RedisSerializer
getRedisSerializer() { return redisTemplate.getStringSerializer(); } /** * 对某个主键对应的值加一,value值必须是全数字的字符串 * * @param key the key * @return the long */ public long incr(final String key) { return redisTemplate.execute((RedisCallback
) connection -> { RedisSerializer
redisSerializer = getRedisSerializer(); return connection.incr(redisSerializer.serialize(key)); }); } /** * redis List 引擎 * * @return the list operations */ public ListOperations
opsForList() { return redisTemplate.opsForList(); } /** * redis List数据结构 : 将一个或多个值 value 插入到列表 key 的表头 * * @param key the key * @param value the value * @return the long */ public Long leftPush(String key, Object value) { return opsForList().leftPush(key, value); } /** * redis List数据结构 : 移除并返回列表 key 的头元素 * * @param key the key * @return the string */ public Object leftPop(String key) { return opsForList().leftPop(key); } /** * redis List数据结构 :将一个或多个值 value 插入到列表 key 的表尾(最右边)。 * * @param key the key * @param value the value * @return the long */ public Long in(String key, Object value) { return opsForList().rightPush(key, value); } /** * redis List数据结构 : 移除并返回列表 key 的末尾元素 * * @param key the key * @return the string */ public Object rightPop(String key) { return opsForList().rightPop(key); } /** * redis List数据结构 : 返回列表 key 的长度 ; 如果 key 不存在,则 key 被解释为一个空列表,返回 0 ; 如果 key 不是列表类型,返回一个错误。 * * @param key the key * @return the long */ public Long length(String key) { return opsForList().size(key); } /** * redis List数据结构 : 根据参数 i 的值,移除列表中与参数 value 相等的元素 * * @param key the key * @param i the * @param value the value */ public void remove(String key, long i, Object value) { opsForList().remove(key, i, value); } /** * redis List数据结构 : 将列表 key 下标为 index 的元素的值设置为 value * * @param key the key * @param index the index * @param value the value */ public void set(String key, long index, Object value) { opsForList().set(key, index, value); } /** * redis List数据结构 : 返回列表 key 中指定区间内的元素,区间以偏移量 start 和 end 指定。 * * @param key the key * @param start the start * @param end the end * @return the list */ public List
getList(String key, int start, int end) { return opsForList().range(key, start, end); } /** * redis List数据结构 : 批量存储 * * @param key the key * @param list the list * @return the long */ public Long leftPushAll(String key, List
list) { return opsForList().leftPushAll(key, list); } /** * redis List数据结构 : 将值 value 插入到列表 key 当中,位于值 index 之前或之后,默认之后。 * * @param key the key * @param index the index * @param value the value */ public void insert(String key, long index, Object value) { opsForList().set(key, index, value); }}
如果您在实际工作中有比较实用的工具类,欢迎分享一下,一起学习提高!
标签
生物学BBR Plus豆瓣评分Easypanel模板外国媒体Swoole扩展Emlog SEO优化油管视频网络代理埃隆马斯克微信双开学生特权数据存储扫码乘车压缩包密码微信立减金数据库JS解密88VIP小厨娘美食记
评论(0条)
游客评论
评论
更多 推荐文章
- 10-31我国首次实现从一氧化碳到蛋白质的合成
- 10-01高通骁龙810的手机有哪些(手机处理器性能排名)
- 08-01信息过滤是什么意思-手机敏感词过滤软件
- 08-02视频模糊怎么变清晰(视频模糊变清晰处理方法)
- 06-16学生笔记本排行榜(学生用什么牌子的笔记本比较好)
- 10-15山地车什么牌子质量好(国内最好的山地自行车品牌)
- 06-05hp打印机型号编码不可用(打印机型号编码显示不可用)
- 08-01因特尔快速存储技术有什么用-英特尔快速存储技术加速方法
- 11-08诺基亚所有型号手机报价(诺基亚2021新上市的手机)
- 08-06【虚拟物品】腾讯视频抽奖
标签云
海螺模版 游戏模拟器 支付宝代付系统 金蝶云 网址发布页源码 Ripro主题源码 建站工作室 砸金蛋系统 灵异奇闻 双子星IPTV 微聊系统源码 洗衣店小程序 仪表管件网站 建材公司源码 短视频去水印 php聊天室系统
一个专业的免费源码资源互联网分享平台
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
- 刀客源码 | 友链申请 | 广告合作 | 免责声明 | 联系我们 | 网站地图
Copyright © 2018-2023 刀客源码网 版权所有 皖ICP备2022001723号-1
1.本站大部分内容均收集于网络!若内容若侵犯到您的权益,请发送邮件至:duhaomu@163.com,我们将第一时间处理!
2.资源所需价格并非资源售卖价格,是收集、整理、编辑详情以及本站运营的适当补贴,并且本站不提供任何免费技术支持。
3.所有资源仅限于参考和学习,版权归原作者所有,更多请阅读网站声明。