Saya tidak begitu memahami maksud kod anda dan ia nampaknya tidak sepadan dengan penerangan anda.
Bukan mustahil untuk menggunakan redis, tetapi kecekapannya mungkin agak rendah Adalah disyorkan untuk menggunakan penguncian optimis untuk menyelesaikan masalah ini.
Contohnya: Katakan terdapat medan versi dalam jadual pesanan. Medan ini hanya boleh ditambah dalam satu arah (biasanya +1 apabila memilih, lihat version juga:
SELECT ..., version FROM order
WHERE ...;
UPDATE order
SET ...,
version = version+1
WHERE version = 上一个SELECT语句带出来的version值
Andaikan pengguna A dan pengguna B mencari pesanan dengan order_id=1, version=1 dalam tempoh masa tertentu, satu demi satu atau pada masa yang sama Disebabkan kewujudan kunci baris mysql semasa KEMASKINI, hanya seorang pengguna akan KEMASKINI dengan jayanya (1 baris terjejas ), KEMASKINI pengguna lain gagal (0 baris terjejas), dan kemudian anda boleh menilai sama ada pengguna berjaya meraih pesanan berdasarkan bilangan baris yang dikembalikan selepas KEMASKINI.
Saya tidak begitu memahami maksud kod anda dan ia nampaknya tidak sepadan dengan penerangan anda.
Bukan mustahil untuk menggunakan redis, tetapi kecekapannya mungkin agak rendah Adalah disyorkan untuk menggunakan penguncian optimis untuk menyelesaikan masalah ini.
Contohnya:
Katakan terdapat medan versi dalam jadual pesanan. Medan ini hanya boleh ditambah dalam satu arah (biasanya +1 apabila memilih, lihat
version
juga:Andaikan pengguna A dan pengguna B mencari pesanan dengan order_id=1, version=1 dalam tempoh masa tertentu, satu demi satu atau pada masa yang sama Disebabkan kewujudan kunci baris mysql semasa KEMASKINI, hanya seorang pengguna akan KEMASKINI dengan jayanya (1 baris terjejas ), KEMASKINI pengguna lain gagal (0 baris terjejas), dan kemudian anda boleh menilai sama ada pengguna berjaya meraih pesanan berdasarkan bilangan baris yang dikembalikan selepas KEMASKINI.