首页 > 编程知识 正文

redis 加锁,redis全局锁

时间:2023-05-03 11:26:25 阅读:22527 作者:3811

原理:基于切片编程用评论方式实现redis锁

代码如下。

依赖关系:

ependencygroupidorg.redis son/groupidartifactidredisson/artifactidversion3.7.3/version/dependency注释代码

@target({elementtype.method} ) retention ) retention policy.runtime inherited public @ interfaceredislock )/** /** * long expire () default 1800L; time单元time unit () default TimeUnit.SECONDS; }切面级,其中的业务执行是定制异常类,可以自己实现

@ aspect @ componentpublicclassredislockaspect { @ autowiredprivateredissonclientredissonclient; privatestaticfinalstringredis _ prefix=' redis son _ lock : '; @around('@annotation(redislock ) ) publicobjectaround ) proceedingjoinpoint,RedisLock redisLock ) ) stringkoing strourd rock rlock=redissonclient.get lock (redis _ prefixlockname ' : ' key ); rock.expire(redislock.expire )、redisLock.timeUnit ); 布尔型b=假; try { //未能锁定后立即返回b=rlock.trylock(0,TimeUnit.SECONDS ); if(b ) { return joinPoint.proceed; } else { thrownewbusinessexception ('当前页面上有人正在操作。 请稍后再试.'); } catch (业务案例) thrownewbusinessexception ) e.geterrormessage ); }catch(throwablee ) { throw new BusinessException ('当前页面上有人正在操作。 请稍后再试. '; } finally { //锁定if(b ) { rLock.unlock ); } }使用方法

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。