面过大厂的人都知道,分布式基本上是必考点。而面试只要问到分布式,必问分布式锁。
毕竟在当前互联网,分布式、高并发已经是业务要求的常态。而在分布式场景中,分布式锁是解决数据一致性和安全性的一个重要手段。
实现分布式锁的方式有很多,其中 Redis 是最常见的一种。而相较于 Java + Redis 的方案,我个人更倾向于Go+Redis,从编程难易程度上来说,要简单得多。
比如 Go 里面有以下特性可用:
context:可以同时监听超时、用户主动取消,或者在重试的时候触发重试时机
channel+select:可以同时监听多个信号。其实 context 也会发送超时信号,或者用户主动取消信号
Go还支持了singleflight,所以也不需要自己写
另外,Go goroutine 非常轻量,可以在分布式锁里面随便开。
以下面的 demo 为例,里面一大堆的“select - case”,即便 Go 有这些工具可用,看起来依旧很复杂。
那么,问题来了:
如何用 Go+Redis 实现一个生产环境可用的分布式锁?
里面有哪些细节需要关注?
怎么设计测试用例,完成测试?
又要怎么优化写出来的分布式锁的性能?
审核编辑 :李倩
-
编程
+关注
关注
88文章
3637浏览量
93934 -
Redis
+关注
关注
0文章
378浏览量
10920
原文标题:手撸了个 Redis 分布式锁,我悟了!
文章出处:【微信号:小林coding,微信公众号:小林coding】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论