Pertimbangkan dua transaksi bersamaan yang terjadi pada tengah malam. Keduanya dapat mengeksekusi get(dt_key), tetapi yang satu akan mengeksekusi blok MULTI/EXEC terlebih dahulu. Ini akan mengatur ulang penghitung, mengatur tanggal baru, menambah penghitung. Yang kedua akan masuk juga di blok MULTI/EXEC-nya, tetapi karena nilai 'dt' telah berubah, eksekusi akan gagal, dan incr_daily_number akan dipanggil lagi. Kali ini get(dt_key) akan mengembalikan tanggal baru, jadi ketika blok MULTI/EXEC akan dieksekusi, penghitung akan bertambah tanpa reset. Kedua transaksi akan mengembalikan tanggal baru dengan nilai penghitung yang berbeda.
Jadi, saya percaya tidak ada kondisi balapan di sini, dan pasangan (tanggal,nomor) akan unik.
Anda juga dapat mengimplementasikan ini menggunakan skrip Lua sisi server (yang eksekusinya selalu atomik). Biasanya lebih nyaman.
Perhatikan bahwa sebenarnya, tidak ada yang namanya kunci Redis. Mekanisme penguncian yang tersedia di API disediakan oleh klien Python - bukan oleh server Redis. Jika Anda melihat implementasinya, Anda akan menyadari bahwa ini juga didasarkan pada blok SETNX + WATCH/MULTI/EXEC atau skrip Lua.