用的是阿里云
大并发同时操作一个字段 导致数据异常的问题 有类似php的文件锁之类的 或者其他的实现方式?
用的是阿里云
大并发同时操作一个字段 导致数据异常的问题 有类似php的文件锁之类的 或者其他的实现方式?
加锁是实现数据一致性的一种常用方法。
可以通过调用 uni-distributed-lock 模块中的相关 API 来获取锁或释放锁。使用分布式锁可以避免多个节点对同一个资源进行修改时造成的数据不一致问题。
具体操作步骤如下:
1.引入 uni-distributed-lock 模块
在项目中引入 uni-distributed-lock 模块,可以通过 npm 安装该模块并在代码中引入。
2.获取锁
使用 acquireLock 方法获取锁,该方法需要传入一个标识锁的字符串作为参数,并且支持设置锁的过期时间。
const lock = require('uni-distributed-lock')
async function foo() {
// 获取名为 'my-lock' 的锁,有效期为 10 秒
const acquired = await lock.acquireLock('my-lock', 10000)
if (acquired) {
console.log('获取锁成功')
// 处理业务逻辑
// ...
// 释放锁
await lock.releaseLock('my-lock')
} else {
console.log('获取锁失败')
}
}
3.释放锁
使用 releaseLock 方法释放锁,该方法需要传入之前用于获取锁的字符串作为参数。
await lock.releaseLock('my-lock')
await lock.releaseLock('my-lock')
同时操作一个字段是指什么样的操作?将这个字段设置成某个值还是对这个字段的数值进行增减
hhyang (作者)
回复 DCloud_uniCloud_WYQ: 屎山代码 金额 数据库之前存的是元为单位 我接手后不想去动它了 所以就按元为单位 用插件计算小数的加减 关键不是这个问题 是如何加锁的问题
2023-03-23 14:55
hhyang (作者)
uni-distributed-lock 这个模块你在哪里找到的?我找了一圈没找到呢
2023-03-23 13:05
BoredApe
ChatGPT?
2023-03-23 13:42
hhyang (作者)
回复 BoredApe: 大大 你们这边有解决方案吗?
2023-03-23 14:03
y***@163.com
我也没找到这个模块呀,如何加锁呀
2024-02-28 15:06