iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >redis单线程需要加锁的原因
  • 303
分享到

redis单线程需要加锁的原因

2024-04-02 19:04:59 303人浏览 泡泡鱼
摘要

这篇文章将为大家详细讲解有关Redis单线程需要加锁的原因,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。个人理解是,虽然redis是单线程,但是可以同时有多个客户端访问,

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

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

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

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

分布式锁的实现条件

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

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

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

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

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

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

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

您可能感兴趣的文档:

--结束END--

本文标题: redis单线程需要加锁的原因

本文链接: https://www.lsjlt.com/news/53091.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • redis单线程需要加锁的原因
    这篇文章将为大家详细讲解有关redis单线程需要加锁的原因,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。个人理解是,虽然redis是单线程,但是可以同时有多个客户端访问,...
    99+
    2024-04-02
  • redis单线程速度快的原因
    小编给大家分享一下redis单线程速度快的原因,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!Redis之所以执行速度很快,主要依赖于以下几个原因:(一)纯内存操作,避免大量访问数据库,减少直接...
    99+
    2024-04-02
  • redis是单线程的原因有哪些
    小编给大家分享一下redis是单线程的原因有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、Redis为什么是单线程的?因...
    99+
    2024-04-02
  • redis单线程快的原因是什么
    这篇文章主要为大家展示了“redis单线程快的原因是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“redis单线程快的原因是什么”这篇文章吧。Redis之所...
    99+
    2024-04-02
  • Redis选择单线程的原因是什么
    本文小编为大家详细介绍“Redis选择单线程的原因是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Redis选择单线程的原因是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、Redis版本迭代Redi...
    99+
    2023-07-05
  • redis单线程执行速度这么快的原因
    这篇文章主要介绍了redis单线程执行速度这么快的原因,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。Redis之所以执行速度很快,主要依赖于以下...
    99+
    2024-04-02
  • 单线程的Redis支持10w+的QPS的原因有哪些
    本篇内容主要讲解“单线程的Redis支持10w+的QPS的原因有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“单线程的Redis支持10w+的QPS的原因有...
    99+
    2024-04-02
  • Redis中需要AOF重写的原因有哪些
    AOF文件过大:随着Redis的运行,AOF文件会不断增长,可能达到非常大的规模,导致占用大量磁盘空间。 AOF文件过期:A...
    99+
    2024-05-07
    Redis
  • Redis单线程能支撑高并发的原因是什么
    本篇内容介绍了“Redis单线程能支撑高并发的原因是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!几种...
    99+
    2024-04-02
  • css需要压缩的原因
    这篇文章将为大家详细讲解有关css需要压缩的原因,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。css的三种引入方式1.行内样式,最直接最简单的一种,直接对HTML标签使用style=""...
    99+
    2023-06-15
  • Java单例一定要加volatile的原因是什么
    这篇文章主要介绍“Java单例一定要加volatile的原因是什么”,在日常操作中,相信很多人在Java单例一定要加volatile的原因是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java单例一定要...
    99+
    2023-06-30
  • java线程池产生死锁的原因是什么
    本篇文章为大家展示了java线程池产生死锁的原因是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Java的特点有哪些Java的特点有哪些1.Java语言作为静态面向对象编程语言的代表,实现了面向...
    99+
    2023-06-14
  • java线程之死锁产生的原因是什么
    这篇文章主要讲解了“java线程之死锁产生的原因是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“java线程之死锁产生的原因是什么”吧!一、什么是死锁死锁是指两个或两个以上的进程在执行过...
    99+
    2023-06-30
  • 分布式锁要选择Zookeeper而不是Redis的原因是什么
    这篇文章给大家分享的是有关分布式锁要选择Zookeeper而不是Redis的原因是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在分布式的应用中,为了防止单点故障,保障高可用,通常会采用主从结构,当主节点挂掉...
    99+
    2023-06-15
  • web项目要引入redis的原因
    web项目要引入redis的原因?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!redis是Nosql数据库,是一个key-...
    99+
    2024-04-02
  • linux需要分区的原因有哪些
    这篇文章主要为大家展示了“linux需要分区的原因有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux需要分区的原因有哪些”这篇文章吧。linux分区的原因:1、分区可以防止数据丢失,...
    99+
    2023-06-29
  • 微信小程序一定需要内容运营加持的原因是什么
    这篇文章主要为大家展示了“微信小程序一定需要内容运营加持的原因是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“微信小程序一定需要内容运营加持的原因是什么”这篇文章吧。众多企业以及个体商家在开...
    99+
    2023-06-27
  • c++多线程要使用条件变量的原因
    小编给大家分享一下c++多线程要使用条件变量的原因,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!先看示例1:#include <iostream&...
    99+
    2023-06-15
  • kubernetes需要默认的serviceaccount的原因解析
    目录什么是k8s的serviceAccount?为什么每一个ns下都有默认的sa?default sa yaml默认的sa下都会挂一个secret,这个secret是从哪里来的?一道...
    99+
    2023-05-18
    kubernetes serviceaccount
  • Redis单线程的优劣势
    这篇文章主要讲解了“Redis单线程的优劣势”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Redis单线程的优劣势”吧!Redis的高并发和快速原因1.re...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作