1
请教一个关于多人同时操作一条数据的问题
source link: https://www.v2ex.com/t/789061
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
目前有个场景: 比如 A 用户选中一条数据进入设计页面,然后在 A 用户保存之前其它用户都不能操作这条数据.有什么比较好的处理 方法吗?
27 条回复 • 2021-07-14 23:28:08 +08:00
chenshun00 2 天前
加个状态就可以了,定时心跳保活,不建议用 redis,多一个组件多一个麻烦,还用不到 redis,数据库本身就可以搞定了。这里的矛盾不在于并发有多大,粒度这么粗,数据库本身就搞定了。
RRRSSS 2 天前
@Spider1996 就从你的描述来看,用 Redission,伪代码大概是这样:
```java
// 进入页面 controller:
RLock lock = redisson.getLock("anyLock");
// 尝试加锁 最多等待 100s 上锁以后 10s 自动解锁
boolean res = lock.tryLock(100, 10, TimeUnit.SECONDS);
try {
if (res) {
// 获取到锁
// 业务逻辑
}
} catch (Exception e) {
throw e;
} finally {
// 最后一定要释放锁
if (lock != null) {
lock.unlock();
}
}
```
如果只是 2B 业务,可能不用那么严谨,使用 Redission 直接用 redis 就行了
```java
// 进入页面 controller:
RLock lock = redisson.getLock("anyLock");
// 尝试加锁 最多等待 100s 上锁以后 10s 自动解锁
boolean res = lock.tryLock(100, 10, TimeUnit.SECONDS);
try {
if (res) {
// 获取到锁
// 业务逻辑
}
} catch (Exception e) {
throw e;
} finally {
// 最后一定要释放锁
if (lock != null) {
lock.unlock();
}
}
```
如果只是 2B 业务,可能不用那么严谨,使用 Redission 直接用 redis 就行了
saulshao 17 小时 57 分钟前
你这个就是给这条记录定义一个状态,然后用户 A 一旦开始编辑操作,就把这个状态更新为编辑中。
直到用户 A 编辑完成(设一个显式的按钮)为止,其他人都只能看。没必要想那么复杂。
管它掉线之类的,一概不理。
直到用户 A 编辑完成(设一个显式的按钮)为止,其他人都只能看。没必要想那么复杂。
管它掉线之类的,一概不理。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK