分布式锁

go redis锁

redis经常用作分布式锁,这里记录一个简单的锁代码如下: package main import ( "crypto/rand" "encoding/base64" "fmt" "github.com/go-redis/redis" "io" "sync" "time" ) func main(...

使用Redis分布式锁处理并发,解决超卖问题

一、使用Apache ab模拟并发压测 1、压测工具介绍 $ ab -n 100 -c 100 http://www.baidu.com/ -n表示发出100个请求,-c模拟100个并发,相当是100个人同时访问。 还可以这样写: $ ab -t 60 -c 100 http://www.baidu.com/ -t表示60秒,-c是100个并发,会在连续6...

Redis分布式锁/Redis的setnx命令如何设置key的失效时间(同时操作setnx和expire)

Redis的setnx命令是当key不存在时设置key,但setnx不能同时完成expire设置失效时长,不能保证setnx和expire的原子性。我们可以使用set命令完成setnx和expire的操作,并且这种操作是原子操作。下面是set命令的可选项:  从上面可以看出,多个命令放在同一个redis连接中并且redis是单线程的,因此上面的操作可以看...

整理分布式锁:业务场景&分布式锁家族&实现原理

1、引入业务场景 业务场景一出现: 因为小T刚接手项目,正在吭哧吭哧对熟悉着代码、部署架构。在看代码过程中发现,下单这块代码可能会出现问题,这可是分布式部署的,如果多个用户同时购买同一个商品,就可能导致商品出现库存超卖 (数据不一致)现象,对于这种情况代码中并没有做任何控制。 原来一问才知道,以前他们都是售卖的虚拟商品,没啥库存一说,所以当时没有考虑那么多...

Redis系列文章总结:ASP.Net Core 中如何借助CSRedis实现一个安全高效的分布式锁

引言:最近回头看了看开发的.Net Core 2.1项目的复盘总结,其中在多处用到Redis实现的分布式锁,虽然在OnResultExecuting方法中做了防止死锁的处理,但在某些场景下还是会发生死锁的问题,下面我只展示部分代码: 问题: (1)这里setnx设置的值“1”,我想问,你最后del的这个值一定是你自己创建的吗? (2)图中标注的步骤1和步...

单进程单线程的Redis如何能够高并发

1、基本原理 采用多路 I/O 复用技术可以让单个线程高效的处理多个连接请求(尽量减少网络IO的时间消耗) (1)为什么不采用多进程或多线程处理? 多线程处理可能涉及到锁 多线程处理会涉及到线程切换而消耗CPU (2)单线程处理的缺点? 无法发挥多核CPU性能,不过可以通过在单机开多个Redis实例来完善 2、Redis不存在线程安全问题? Redis采...

原生redis命令

一、 redis-cli 连接 redis 进入redis安装目录 cd /usr/local/bin 进入redis客户端 ./redis-cli -p 6379 -h 用于指定 ip -p 用于指定端口 -a 用于指定认证密码 退出客户端 quit 指定 database,默认16个数据库 select 3   二、 redis-cli 操作 redi...

golang使用etcd实现分布式锁

1 package main 2 3 import ( 4 "context" 5 "fmt" 6 "time" 7 8 "go.etcd.io/etcd/clientv3" 9 ) 10 11 func main() { 12 var ( 13 client *clientv...

.net 分布式架构之分布式锁实现

分布式锁 经常用于在解决分布式环境下的业务一致性和协调分布式环境。 实际业务场景中,比如说解决并发一瞬间的重复下单,重复确认收货,重复发现金券等。 使用分布式锁的场景一般不能太多。 开源地址:http://git.oschina.net/chejiangyi/XXF.BaseService.DistributedLock 开源相关群: .net 开源基础服...

2019 云和数据java面试笔试题 (含面试题解析)

  本人5年开发经验、18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴、今日头条、云和数据等公司offer,岗位是Java后端开发,因为发展原因最终选择去了云和数据,入职一年时间了,也成为了面试官,之前面试了很多家公司,感觉大部分公司考察的点都差不多,趁空闲时间,将自己的心得记下来,希望能给正在找或者准备找工作的朋友提供一点帮助。   下面提的问题...