文章 130
评论 48
浏览 79509
JAVA 基于Redis的分布式锁

JAVA 基于Redis的分布式锁

分布式锁一般有三种实现方式: 数据库乐观锁 基于ZooKeeper的分布式锁 基于Redis的分布式锁 这里主要记录下基于Redis的分布式锁 Redis加锁 springboot2.1以后的版本可以直接使用redisTemplate提供的setIfAbsent方法进行加锁 相当于使用redis命令:SET key value [EX seconds] [PX millisecounds] [NX|XX] redisTemplate.opsForValue().setIfAbsent(key,value,time,TimeUnit) 为什么是set命令而不是setNx命令? 因为setNx 无法设置key过期时间 需要通过expire来为key设置过期时间,意味着加锁是两条命令,不满足原子性。 锁的过期时间设置多少合适,是否可以不设置? 锁的过期时间一定是要有的,不然留着过年么?过期时间根据具体的业务逻辑来设置,但是一定要大于代码执行的时间。例如: //加锁 锁的过期时间为5秒 Boolean lock = redisTemplate.opsForValue().set....

mybatis-plus max函数,sum函数的使用

mybatis-plus max函数,sum函数的使用

最近在使用mybatis-plus,发现在对于一些简单函数的使用,官方文档上面没有说明,特此记录下自己的使用方式 max,min,sum函数的使用 QueryWrapper<MemberLevel> queryWrapper = new QueryWrapper<>(); queryWrapper.select("max(level_sort) as levelSort"); 相当于sql : select max(level_sort) as levelSort from member_level 其中的max可以换成min,sum等函数 就是如此的简单

LocalDateTime和时间戳,Date,字符串互转

LocalDateTime和时间戳,Date,字符串互转

开发当中经常时间转换非常常见,最近的项目当中使用了LocalDateTime,特此记录下LocalDateTime的常用转换。 LocalDateTime和时间戳互转 /** * 获取到毫秒级时间戳 * @param localDateTime 具体时间 * @return long 毫秒级时间戳 */ public static long toEpochMilli(LocalDateTime localDateTime){ return localDateTime.toInstant(ZoneOffset.of("+8")).toEpochMilli(); } /** * 毫秒级时间戳转 LocalDateTime * @param epochMilli 毫秒级时间戳 * @return LocalDateTime */ public static LocalDateTime ofEpochMilli(long epochMilli){ return LocalDateTime.ofInstant(Instant.ofEpochMilli(epochMilli), ZoneOffs....

JAVA面试题总结(不断添加整理当中。。。。。。)

JAVA面试题总结(不断添加整理当中。。。。。。)

最近要找工作了,复习总结一下面试题,总有些问题一直在问,总有些问题慢慢消失了,也总有些问题第一次遇到。 JAVA 基础篇 有了基本类型为什么还要包装类? "=="和equals方法究竟有什么区别? 两个对象的hashCode()相等,则equals()也一定为true? String,StringBuffer,StringBuilder的区别和联系 final, finally, finalize的区别 Java抽象类与接口的区别 Java集合篇 List和Set,map的区别 hashMap的实现原理 List集合元素的正确删除方式 JavaWeb篇 Session和Cookie区别 拦截器和过滤器的区别 Servlet的生命周期 Spring/SpringMVC/SpringBoot 为什么要使用spring spring常用的三种注入方式 spring使用了那些设计模式 springMVC执行流程 springboot面试题 数据库篇 drop,delete与truncate的区别 inn....

一个菜鸟程序员的踩坑日记