redis使用Lua脚本解决多线程下的超卖问题及原因解析
一.多线程下引起的超卖问题呈现 1.1.我先初始化库存数量为1、订单数量为0 1.2.开启3个线程去执行业务 业务为:判断如果说库存数量大于0,则库存减1,订单数量加1 结果为:库存为-2,订单数量为3 原因:如下图所示,这是因为分别有6个指令(3个库存减1指令,3个订单数量加1指令)在redis服务端执行导致的。 namespace MengLin.Shopping.Redi
Redis 2023年07月11日 141
一.多线程下引起的超卖问题呈现 1.1.我先初始化库存数量为1、订单数量为0 1.2.开启3个线程去执行业务 业务为:判断如果说库存数量大于0,则库存减1,订单数量加1 结果为:库存为-2,订单数量为3 原因:如下图所示,这是因为分别有6个指令(3个库存减1指令,3个订单数量加1指令)在redis服务端执行导致的。 namespace MengLin.Shopping.Redi
Redis 2023年07月11日 141
本文介绍一下查看 PostgreSQL 服务器版本的几种方法。 方法一:SELECT version() 如果已经连接到 PostgreSQL 服务器,可以执行以下查询语句获取服务器版本信息: SELECT version(); 以下是一个返回结果的示例: version ------------------------------
PostgreSQL 2023年07月11日 146
01 卸载 管理员权限进入cmd 停掉服务 1、 sc stop MongoDB 删除服务 2、 sc delete MongoDB 3、 然后再是软件卸载,数据库删除 点击你之前的安装包 删除完毕!!! 02 MongoDB安装 02::01 MongoDB安装 安装的时候,有个地方需要注意一下,就是不要勾选 Install MongoDB C
MongoDB 2023年07月11日 142
数据操作 查询单个列的数据 SELECT column_name FROM table_name; 查询多个列的数据 SELECT column1, column2 FROM table_name; 带条件查询数据 SELECT column1, column2 FROM table_name WHERE condition; 插入数据 INSERT INTO table_name (column
Mysql 2023年07月11日 140
原来sql注入如此简单 以SQL注入靶场sqli-labs第一关为例,进行sqlmap工具的使用分享。 一、判断是否存在注入点 使用命令: 使用命令:sqlmap -u "http://49.232.78.252:83/Less-1/?id=1" 有图中白色背景的 则判断出有注入点 二、查询当前用户下所有数据库 使用命令: sqlmap -u "http://49.232
SQLServer 2023年07月11日 98
首先,我是一名技术小白,有些问题的理论不是理解得很透彻,如果大家有什么问题,我们一起讨论,增长彼此,这样才是最好的,扫弊自珍,是最大的愚蠢。 我如果感兴趣,也会回复各位,帮助大家寻找解决方法,我就是免费的劳动力/ww~~~ 现在进入正题: 1.安装步骤 我是遇到问题后,从B站上面查找的参考资料,因为不知道是否涉及版权问题,所以大家自己搜索一下 1.从官网上下载安装包,我下载的是Expre
SQLServer 2023年07月11日 137
一、使用Jackson2JsonRedisSerializer序列化反序列化带泛型的List数据 1、使用Jackson2JsonRedisSerializer序列化value的代码: RedisTemplate<Object, Object> template = new RedisTemplate<Object,Object>(); template.setKey
PostgreSQL-DATEDIFF-日期时间差,以秒,天,月,周等为单位 您可以使用各种日期时间表达式或用户定义的 DATEDIFF 函数(UDF)在 PostgreSQL 中计算两个日期时间值之间的差,以秒,分钟,小时,天,周,月和年为单位。 总览 PostgreSQL 不提供类似于 SQL Server DATEDIFF 的[2] DATEDIFF 函数,但是您可以使用各种表达式或
PostgreSQL 2023年07月11日 154
什么是数据库死锁 在操作系统领域当中,死锁指的是两个或者两个以上的进程在运行的过程中,因为争夺共同的访问资源而相互等待阻塞,最终造成阻碍进程继续执行的一种阻塞现象。那么在数据库领域当中死锁又是怎样的表现形式呢? 如下图所示,假设事务A持有行1的共享锁,事务B持有行2的共享锁,那么此时事务A请求持有行2的排他锁,那么在事务B释放资源之前都处于阻塞等待的状态,同样的事务B请求持有行1的排他锁,在事
PostgreSQL 2023年07月11日 147
语法格式:PATINDEX ( '%pattern%' , expression ) 返回pattern字符串在表达式expression里第一次出现的位置,起始值从1开始算。 pattern字符串在expression表达式里没找就返回0,对所有有效的文本和字符串就是有效的数据类型。 描述一下此函数的具体用法: 1. PATINDEX ( '%pattern%' , expression
SQLServer 2023年07月11日 143