文章 119
评论 29
浏览 34517
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....

Redis学习日志之SpringBoot2.0+整合Redis(基于Redission)

Redis学习日志之SpringBoot2.0+整合Redis(基于Redission)

海加尔金鹰 ———— 如野草般一岁一枯荣 昨天完成了redis的简单安装Redis学习日志之Linux下的安装,今天就在项目当中简单整合使用一下 整合环境说明 JDK1.8版本 idea开发工具 springboot2.1.0版本 为什么选择Redission? springboot2.0之前的版本默认支持的是Jedis 但是在2.0后换成了Lettuce。 java连接redis最多的就是Jedis,Redisson,Lettuce这三种方式 简单说明介绍:Redis的三个框架:Jedis,Redisson,Lettuce 最后选择了Redission,因为Redisson的宗旨是促进使用者对Redis的关注分离,从而让使用者能够将精力更集中地放在处理业务逻辑上。 在POM当中引入对应JAR 根据Redission官方整合文档进行引入和使用: <!-- redisson --> <dependency> <groupId>org.redisson</groupId> <artifactId>redisson-spring......

Redis学习日志之第一天

Redis学习日志之第一天

之前开发当中基本使用的是MySQL数据库,最近打算学习一下redis数据库,在此将自己学习的过程记录下来。 redis简单说明 redis的官方网站:https://redis.io/ redis的前世今生:https://blog.csdn.net/echizao1839/article/details/80883312 redis的简单说明:一个开源、支持网络、基于内存亦可持久化的日志型、Key-Value的NoSql数据库。 redis在linux下的安装 安装基于阿里云服务器Centos7.0版本。 第一步:使用putty远程连接工具进入服务器(使用其他工具也行,反正就是进入到自己的阿里云服务器上) 第二步:依次输入以下命令,就安装完毕了。这是官网网站提供的安装教程,如果熟悉linux命令,可以自己在make命令后面添加参数,安装到指定位置。官网安装教程。。。。在网页最下面 wget http://download.redis.io/releases/redis-5.0.3.tar.gz tar xzf redis-5.0.3.tar.gz cd redis-5.0.3 mak....

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