分布式锁之Redis实现
一.分布式锁简介
在分布式系统之前,系统中的锁还是单服务器上的锁,比如锁住一个进程中的多线程访问同一资源。如使用synchronized
来实现。随着系统的发展,到后来分布式应用,有可能同一资源被多台服务器上的不同进程竞争,这种情况下,出现了今天讨论的分布式锁
。
目前主流的分布式锁实现方式主要有下面三种:
- 基于数据库的索引和行锁,数据库乐观锁
- 基于Redis的单线程原子操作:setNX
- 基于Zookeeper的临时有序节点
这里主要介绍Redis的实现。锁需要满足下面的条件:
- 互斥性,只有一个客户端能占有锁,具有排他
- 无死锁,即使发生有客户端无法解锁,也能保证后续其他客户端能加锁,应该有超时或者异常情况下,释放锁
二.Redis实现
1.使用setnx
实现
先上代码:
long now = System.currentTim

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
[雪峰磁针石博客]数据仓库快速入门教程1简介
数据仓库是从各种渠道收集和管理数据的技术,可提供有意义的业务洞察,战略性地使用数据。它用于查询和分析而不是事务处理,是将数据转换为信息并及时向用户提供的过程。 决策支持数据库(数据仓库)与组织的运营数据库分开维护。 但是数据仓库不是产品,而是环境。 它是属于信息系统,向用户传统运营数据存储难以访问或展示的当前和历史决策支持信息。 数据仓库是BI系统的核心,BI是为数据分析和报告而构建的。 你们很多人都知道,3NF设计的库存系统数据库很多都有相互关联的表。 例如,有关当前库存信息的报告可包含超过12个连接条件,查询慢。 数据仓库提供了一种新设计,可以缩短响应时间,提高报表和分析查询的性能。 数据仓库系统的其他名称: 决策支持系统(DSS Decision Support System) 执行信息系统(Executive Information System) 管理信息系统(Management Information System) 商业智能解决方案(Management Information System) 分析应用(Analytic Application) 数据仓库(Data W...
- 下一篇
比Python、Java更快的 Go 语言,能否称霸江湖?
文章来源:jb51.net 有一种语言堪称比语言排行榜前五热门选手的Python、Java更快,它就是GO语言。 Go于2009年11月正式宣布推出,成为开放源代码项目,并在Linux及Mac OS X平台上进行了实现,后来追加了Windows系统下的实现。在2016年,Go被软件评价公司TIOBE 选为“TIOBE2016 年最佳语言”。 目前,Go每半年发布一个二级版本(即从a.x升级到a.y)。 在Go语言面世后的9年,有很多公司开始使用Go语言开发自己的服务,甚至完全转向Go开发,也诞生了很多基于Go的服务和应用,比如Dokcer、k8s等,很多的大公司也在用,比如google(作为开发Go语言的公司,当仁不让)、Facebook、腾讯、百度、阿里、京东、小米以及360。 有人称:“Go 是互联网时代的C语言,不仅会制霸云计算,10 年内将会制霸整个 IT 领域。”那么,Go语言真的会制霸IT界吗?我们一起来了解一下这位“新秀”选手。 1 GO语言的优势 1 性能 Go 极其地快。其性能与 Java 或 C++相似。在我们的使用中,Go 一般比 Python 要快 30 倍...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2全家桶,快速入门学习开发网站教程
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8编译安装MySQL8.0.19