首页 > 数据库 >redis的并发竞争问题

redis的并发竞争问题

时间:2023-02-20 19:01:20浏览次数:30  
标签:set 竞争 zookeeper redis 并发 客户端 分布式

第一种方案:分布式锁

1.整体技术方案
这种情况,主要是准备一个分布式锁,大家去抢锁,抢到锁就做set操作。

2.为什么是分布式锁?
因为传统的加锁的做法(如java的synchronized和lock)这里没用,只适合单点。因为这是分布式系统,需要的是分布式锁。

当然,分布式锁可以基于很多种方式实现,比如zookeeper,redis等,不管哪种方式实现,基本原理是不变的:用一个状态值标识锁,对锁的占用和释放通过状态值来标识。

3.分布式锁的要求
互斥性 :在任意一个时刻,只有一个客户端持有锁。
无死锁:即便持有锁的客户端崩溃或者其他意外事件,锁依然可以被获取。
容错:只要大部分redis节点都活着,客户端就可以获取和释放锁。

4.分布式锁的实现方式
数据库

Memcached(add命令)

redis(setnx命令)

zookeeper(临时节点)

第二种方案:利用消息队列

在并发量过大的情况下,可以通过消息中间件进行处理,把并行读写进行串行化。
把redis.set操作放在队列中使其串行化,必须得一个一个执行。
这种方式在一些高并发的场景中算是一种通用的解决方案。

标签:set,竞争,zookeeper,redis,并发,客户端,分布式
From: https://blog.51cto.com/u_15973676/6069334

相关文章

  • redis中热点数据及大value处理
    1.redis的热点数据是什么,可能出现什么问题?某个key的访问频率很高,当一个key的qps到达1000的时候就需要关注了。redis中数据分布在集群的不同节点上,当某个key的qps过高,容......
  • 客户端跟redis的一次通信流程
    1.在redis启动初始化的时候,redis会将连接应答处理器跟AE_READABLE事件关联起来,接着如果一个客户端跟redis发起连接,此时会产生一个AE_READABLE事件,然后由连接应答处理......
  • Memcached与Redis有什么区别
    Redis和Memcached都是基于内存的数据存储系统。Memcached是高性能分布式内存缓存服务,其本质上就是一个内存key-value数据库。Redis是一个开源的key-value存储系统。与......
  • 通过golang编写并发程序监控系统中文件大小并通过prometheus告警
    packagemainimport("fmt""io/ioutil""os""path/filepath""sync")const(maxFileSizeint64=10*1024*1024m......
  • 高并发系统设计之负载均衡
    本文已收录至Github,推荐阅读......
  • 银河麒麟V10系统安装Redis
    1、[root@localhostopt]#yuminstallcpp输入:y  2、[root@localhostopt]#yuminstallbinutils  3、[root@localhostopt]#yuminstallglibc4、[root@......
  • Redis 数据结构
    本文主要描述reids数据结构和底层数据结构的实现,用于熟悉redis的底层数据结构实现原理,下图是reids的整个数据结构组成。这篇文章主要介绍value对象这部分数据结构 SDS......
  • java redis 密码输错5次,已锁定,请30分钟后重试!
    Stringusername=sysUser.getUsername();StringretryCountNum=redisService.get(username);if(StrUtil.isNotBlank(retryCountNum)&&Integer.valueOf(retryCountNum......
  • redis11_Redis的主从复制【先了解待重新看教程】、redis的集群、redis 集群的优缺点
    Redis的主从复制文章目录文章目录​​Redis的主从复制文章目录​​​​redis的主从复制是什么?​​​​redis的集群​​​​集群的Jedis开发​​​​Redis集群的优缺点​​r......
  • 并发代码设计
    为了提高线程利用率并最小化开销,必须决定要使用的线程数量,并为每个线程合理分配任务开始处理之前的线程间数据划分简单算法最容易并行化,比如要并行化std::for_each,把元......