千家信息网

redis单线程需要加锁的原因

发表于:2024-09-27 作者:千家信息网编辑
千家信息网最后更新 2024年09月27日,这篇文章将为大家详细讲解有关redis单线程需要加锁的原因,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。个人理解是,虽然redis是单线程,但是可以同时有多个客户端
千家信息网最后更新 2024年09月27日redis单线程需要加锁的原因

这篇文章将为大家详细讲解有关redis单线程需要加锁的原因,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

个人理解是,虽然redis是单线程,但是可以同时有多个客户端访问,每个客户端会有一个线程。客户端访问之间存在竞争。

因为存在多客户端并发,所以必须保证操作的原子性。比如银行卡扣款问题,获取余额,判断,扣款,写回就必须构成事务,否则就可能出错。

在传统单体应用单机部署的情况下,可以使用Java并发相关的锁,如ReentrantLcok或synchronized进行互斥控制。但是,随着业务发展的需要,原单体单机部署的系统,渐渐的被部署在多机器多JVM上同时提供服务,这使得原单机部署情况下的并发控制锁策略失效了,为了解决这个问题就需要一种跨JVM的互斥机制来控制共享资源的访问,这就是分布式锁要解决的问题。

分布式锁的实现条件

1、互斥性,和单体应用一样,要保证任意时刻,只能有一个客户端持有锁

2、可靠性,要保证系统的稳定性,不能产生死锁

3、一致性,要保证锁只能由加锁人解锁,不能产生A的加锁被B用户解锁的情况

Redis实现分布式锁不同的人可能有不同的实现逻辑。

分布式环境下,数据一致性问题一直是一个比较重要的话题,而又不同于单进程的情况。分布式与单机情况下最大的不同在于其不是多线程而是多进程。多线程由于可以共享堆内存,因此可以简单的采取内存作为标记存储位置。而进程之间甚至可能都不在同一台物理机上,因此需要将标记存储在一个所有进程都能看到的地方。

常见的是秒杀场景,订单服务部署了多个实例。如秒杀商品有4个,第一个用户购买3个,第二个用户购买2个,理想状态下第一个用户能购买成功,第二个用户提示购买失败,反之亦可。而实际可能出现的情况是,两个用户都得到库存为4,第一个用户买到了3个,更新库存之前,第二个用户下了2个商品的订单,更新库存为2,导致出错。

关于redis单线程需要加锁的原因就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

用户 线程 情况 分布式 客户 客户端 单机 进程 问题 保证 不同 单体 库存 控制 原因 一致 一致性 之间 内存 同时 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海携程网络技术有限公司电话 熟悉软件开发技术管理 网络安全典型案例教师 政务云租户网络安全 浦东新区卫健委官网网络安全 国产服务器机柜生产 网络安全知识试题及答案下载 网络安全检查检测工作 视频资源管理服务器 价格 数据库表东西清错怎么还原 致强e5430双cpu服务器 华为服务器系统找不到数据盘 apex 服务器正在关闭 ibmxseries服务器登录 人员信息管理系统软件开发 工业互联网科技股票 软件开发的艺术pdf mt5模拟账号服务器 网络安全问题涉及危害英语作文 如何将数据库连接表单vfp 我的世界宠物世界服务器教学 最终幻想14怎么角色换服务器 安卓小游戏怎么和服务器连接 软件开发资源来源 网络安全智能安全 网络安全交付学习心得 用服务器训练把哪个当宿主机 技术是网络安全的第一道防线 腾讯邮箱添加邮箱服务器设置 系统数据库出错
0