redis
文章平均质量分 50
bulingbuling^_^
这个作者很懒,什么都没留下…
展开
-
解决1秒钟内,用户快速点击,重复请求的问题
前端也可以处理这个问题,到时绕过前端的情况,就需要后端处理了。后端处理逻辑:自定义注解+AOP+Redis自动过期key。原创 2022-07-21 10:51:10 · 865 阅读 · 0 评论 -
RedissonLock 的正确使用方案
maven依赖 <dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> <version>3.9.1</version> </dependency>注入实例 yml文件 配置host 密码 spr...原创 2021-12-23 15:00:00 · 2375 阅读 · 0 评论 -
java.lang.IllegalMonitorStateException: attempt to unlock lock, not locked by current thread by node
按照报错信息翻译:尝试去释放不是当前线程持有的锁。解决方法解锁时添加判断当前线程是否持有此锁RLock lock = redissonClient.getLock(key); if(lock.isLocked()){ // 是否还是锁定状态 if(lock.isHeldByCurrentThread()){ // 时候是当前执行线程的锁 lock.unlock(); // 释放锁 } }...原创 2021-12-23 11:00:38 · 9853 阅读 · 0 评论 -
Is Redlock safe?
Martin Kleppmann, a distributed systems researcher, yesterday published an analysis of Redlock (http://redis.io/topics/distlock), that you can find here: How to do distributed locking — Martin Kleppmann’s blogRedlock is a client side distributed locking.转载 2021-12-22 16:34:57 · 144 阅读 · 0 评论 -
Redlock不安全的原因? How to do distributed locking?
Martin Kleppmann分布式大神原文地址Martin在这篇文章中谈及了分布式系统的很多基础性的问题(特别是分布式计算的异步模型),对分布式系统的从业者来说非常值得一读。这篇文章大体可以分为两大部分:前半部分,与Redlock无关。Martin指出,即使我们拥有一个完美实现的分布式锁(带自动过期功能),在没有共享资源参与进来提供某种fencing机制的前提下,我们仍然不可能获得足够的安全性。 后半部分,是对Redlock本身的批评。Martin指出,由于Redlock本质上是建立在一个同步原创 2021-12-22 15:42:38 · 646 阅读 · 2 评论 -
Redis watch命令 乐观锁 CAS机制却没有ABA问题的原因
Redis Watch 命令给事务提供check-and-set (CAS) 机制。被Watch的Key被持续监控,如果key在Exec命令执行前有改变,那么整个事务被取消。ABA问题是CAS机制的缺陷,大概意思是 A(旧值)-->B(新值)-->A(新值) cas乐观锁会认为A没被修改。但是redis的watch在这种情况下,依然会提示watch key被修改,事务失败。下图为Redis 执行事务的过程先看当我们watch 一个key时,发生了什么。/* * 1...原创 2021-12-07 14:38:00 · 543 阅读 · 0 评论 -
redis WATCH, 事务的简单使用
Watch 命令是Exec命令的执行条件;也就是说,如果Watch的Key没有被修改则Redis执行事务,否则(Watch的key被其他事务修改了)事务不会被执行。Watch 命令可以被调用多次,一个Watch 命令可以监控多个key。Watch 命令调用即启动监控功能,从Watch 命令开始点到执行EXEC命令终止。一旦EXEC被调用,所有的键都将不被监视,无论所讨论的事务是否被中止。关闭客户端连接也会触发所有的键被取消监视。Redis Watch 命令给事务提供check-and-set (...原创 2021-12-07 11:17:03 · 1054 阅读 · 0 评论 -
用RedisTemplate<Object, Object>把对象以json形式存入redis缓存
对象可以不用实现序列化public class User{ private Integer id ; private String userName ; private String password ; public User(Integer id, String userName, String password) { this.id = id; this.userName = userName; this.pass原创 2020-11-16 20:19:45 · 3734 阅读 · 0 评论