国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

webman 多進(jìn)程業(yè)務(wù)鎖,并發(fā)測(cè)試 重復(fù)記錄?

螞蟻搬家

問題描述

插入還是重復(fù)了,改成1個(gè)進(jìn)程就好了
使用AB并發(fā)測(cè)試

ab -n 100  -c 10 -p 'post.txt' -T 'application/json' 'http://127.0.0.1:8989/api/pay'

數(shù)據(jù)庫(kù) 變更前 變更額 變更后
1 1000 -20 980
2 1000 -20 980
3 980 -20 960

<?php

namespace app\controller;

use yzh52521\WebmanLock\Locker;

class Cash {
    public function changeCash()
    {
        // 查詢 Redis 余額
        $balance = Redis 余額;
        $amount = 20;
        $newBalance =  $balance  - $amount;
        if ($newBalance < 0) {
            throw new BadRequestHttpException('余額不足');
        }
        $lock = Locker::lock($key);
        if (!$lock->acquire()) {
            throw new \Exception('操作太頻繁');
        }
        try {
            // 插入消費(fèi)日志
            // 更新Redis 余額信息 $newBalance
        } finally {
            $lock->release();
        }

    }
}
1095 1 0
1個(gè)回答

胡桃

“改成一個(gè)進(jìn)程就好了”,因?yàn)閱芜M(jìn)程所有請(qǐng)求都是“串行”的。加不加鎖已經(jīng)無所謂了。

按你的描述,“判斷”和“更改”應(yīng)當(dāng)視為一個(gè)不可分割的操作,要么查詢之前請(qǐng)求鎖,要么加鎖后再查詢一次,否則數(shù)據(jù)不安全。

年代過于久遠(yuǎn),無法發(fā)表回答
??