Redis企业级应用问题

ref:https://www.bilibili.com/video/BV1Rv41177Af?p=40


系列文章目录


1.分布式锁

1.1 分布式锁要解决的问题?

当系统架构演变为分布式架构 或者 集群架构后,再使用Java API提供的锁就不行了,因为Java API的锁它只能 控制一个节点内的共享资源,因此只适合单体应用。
而分布式架构或 集群架构下,系统分布在不同的节点上,因此就需要使用分布式锁 来控制的共享资源的访问。

1.2 分布式锁主流解决方案?

主流方案有很多。
1、基于数据库实现分布式锁
2、基于Redis
3、基于Zookeeper

而我们主要讨论基于Redis的实现, 而基于Redis的实现的核心命令是:

//设置锁
setnx key value
//设置锁的过期时间
expire key 过期时间
//释放锁
del key

=================完美的等价替换方案是========================
1、刚进入方法的首行,执行:set key value nx ex 10 //过期时间10s
2、共享资源 业务逻辑处理
3、方法的末行,执行 del key //释放锁

当key不存在时,执行这个命令,返回值为1。
当key存在时,执行这个命令,返回值为0。相当于对key上了一把锁,在锁定期间只能重试访问,只有当释放这个锁,即删除key时,别人才能set新值。
对应的逻辑图如下图:在这里插入图片描述
存在的问题:
为了防止一个线程一直占用着锁不释放,我们可以在setnx后 再设置key的过期时间。

setnx key value //设置锁
expire key 过期时间
del key

但是这种方式令会有问题:因为这个过程不是一个原子操作。我们可以使用一种等价替换的方案:即setnx的同时,去设置过期时间。
set key value nx ex 10

2.

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值