首页 > 数据库 >Redis专题-秒杀

Redis专题-秒杀

时间:2023-08-18 10:13:14浏览次数:41  
标签:脚本 专题 KEYS Redis redis Lua 秒杀 操作

Redis专题-并发/秒杀

开局一张图,内容全靠“编”。

昨天晚上在群友里看到有人在讨论库存并发的问题,看到这里我就决定写一篇关于redis秒杀的文章。

img

img

1、理论部分

我们看看一般我们库存是怎么出问题的

img

其实redis提供了两种解决方案:加锁和原子操作

1.1、加锁

加锁:其实非常常见,读取数据前,客户端先获取锁,再操作。
当客户端获得锁后,一直持有直到客户端完成操作,再释放。

怎么操作呢,客户端使用分布式锁来获取锁,(使用redis或者zookeeper来实现一个分布式锁)以商品的维度来加锁,在获取到锁的线程中,按顺序执行商品的库存查询和扣减,同时实现了顺序性和原子性。

img

但是,但是,有问题:
1、如果使用redis来实现分布式锁,那么锁的时效性是个问题。太短了,业务还没跑完锁就释放了。太长了,如果异常,其他业务就一直阻塞等着自动释放。

2、如果使用zookeeper,确实不用担心锁释放问题(临时节点),而且一致性好,但是性能不高。ZK中创建和删除节点只能通过Leader服务器来执行,然后Leader服务器还需要将数据同不到所有的Follower机器上,这样频繁的网络通信,性能的短板是非常突出的。(挖坑

标签:脚本,专题,KEYS,Redis,redis,Lua,秒杀,操作
From: https://www.cnblogs.com/hanfan/p/17639662.html

相关文章

  • 虹科分享|Redis Stack不想再让开发人员受苦了!
    你想构建能提供实时体验的应用程序吗?那么你怎么可以不拥有一个能以最快响应时间处理任何请求的数据库?无论是简单的对象检索、搜索还是复杂的聚合,在一毫秒之内便完成。领先的Redis模块华丽变身为RedisStack来帮你啦!什么是RedisStackRedisStack:整合Redis模块的功能为了简化开发人......
  • 【Java技术专题】「入门到精通系列教程」深入探索Java特性中并发编程体系的原理和实战
    并发编程介绍当今软件开发领域越来越强调性能和伸缩性,因此,利用并发编程可以更好地利用计算资源,提高应用程序的性能和响应速度。以下是一些关于并发编程的相关信息供您参考。什么是并发编程并发编程是指在一个程序中同时执行多个独立的计算任务,并通过各种手段来协调不同任务之间的交......
  • 虹科分享|Redis Stack不想再让开发人员受苦了!
    什么是RedisStackRedisStack:整合Redis模块的功能为了简化开发人员对较新的Redis模块及其提供的功能的体验,同时简化支持其功能的文档和客户端。以帮助开发人员从开始使用Redis的那一刻起,就能充分提高工作效率。RedisStack诞生了。RedisStack将较新的Redis模块整合到一......
  • 【愚公系列】2023年08月 WPF控件专题 Label、TextBox、PasswordBox控件介绍
    (文章目录)前言WPF控件是WindowsPresentationFoundation(WPF)中的基本用户界面元素。它们是可视化对象,可以用来创建各种用户界面。WPF控件可以分为两类:原生控件和自定义控件。原生控件是由Microsoft提供的内置控件,如Button、TextBox、Label、ComboBox等。这些控件都是WPF中常见......
  • 在 Spring Boot 中通过定时任务实现本地 Redis 数据同步到阿里云 Redis
    添加依赖在项目的pom.xml文件中,添加SpringBootStarter和Redis相关的依赖。<!--SpringBootStarter--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency>......
  • liunx安装和卸载redis
    1下载安装1下载wgethttp://download.redis.io/releases/redis-6.2.9.tar.gz2解压tar-xzfredis-6.2.9.tar.gz3建立软连接ln-sredis-6.2.9redis4切换到redis路径下,解压安装cdredismake&&makeinstall在src目录下可以看到#redis-server--->redis服务器#red......
  • 测试面试 | 怎么查看redis | linux
    总的来说就是查服务、查端口、查进程。1、查看服务状态servicestatusnginx / systemctlstatusredis 直接可以看到版本号pid 2、lsof-i:3306一般都是一个服务一个端口,不能两个服务一个,占用了,就起不来了. 3、ps-ef|grepredis  ......
  • redis:info指令
    学习自:Redis之info指令_redis-cliinfo_多动手,勤思考的博客-CSDN博客官网:INFO|Redis场景redis提供了info指令,可以帮助用户查询redis服务运行期间内部的参数以及实时信息,根据这些信息可以帮助用户诊断问题或查看服务负载、内存压力等信息。info指令显示的信息繁多,分为9大块,......
  • redis:redis-cli指令
    学习自:redis-cli命令详解-小学弟--博客园1、登录:redis-cli[选项]选项选项默认值说明对应配置项redis.conf-h<hostname>127.0.0.1以哪个主机名/IP登录Redis如果某个IP没在conf文件中绑定,那就不能用它登录bind-p<port>6379服务器端口号por......
  • redis:set与zset
    学习自:Redis的五种基本数据类型_redis的五种数据类型_喵先森爱吃鱼的博客-CSDN博客Set集合,存放一系列无重复元素 常用命令命令用法说明scardscardKK中元素个数saddsaddKV1V2V3V4往K中添加数据sremsremKV从K中移除数据sismember......