Kunci Redis menggunakan pangkalan data Redis untuk melaksanakan kunci mutex: tetapkan kunci secara atom melalui arahan SETNX, dan jangan beroperasi jika kunci itu wujud. Gunakan arahan EXPIRE untuk menetapkan masa tamat tempoh kunci. Padamkan kunci selepas memperoleh kunci untuk melepaskan kunci.
Mekanisme pelaksanaan kunci Redis
Kunci Redis ialah mekanisme yang menggunakan pangkalan data Redis dalam sistem yang diedarkan untuk melaksanakan kunci pengecualian bersama Prinsip terasnya ialah:
- perintah SETNX secara tidak langsung. -kunci sedia ada dan tetapkan nilai kepada 1. Jika kunci sudah wujud, tiada operasi dilakukan.
- Arahan EXPIRE:Tetapkan masa tamat tempoh untuk kunci yang ditetapkan Selepas masa tamat tempoh, kunci akan dipadamkan secara automatik.
Berdasarkan kedua-dua arahan ini, langkah-langkah untuk melaksanakan kunci Redis adalah seperti berikut:
- Tetapkan kunci:Gunakan perintah
SETNX
untuk cuba menetapkan kunci jika tetapan berjaya, ini bermakna memperoleh kunci.SETNX
命令尝试设置一个键,如果设置成功,则代表获取锁。
- 设置过期时间:使用
EXPIRE
Tetapkan masa tamat tempoh:
- Gunakan perintah
EXPIRE
untuk menetapkan masa tamat tempoh untuk kunci kunci bagi memastikan kunci tidak akan dipegang secara kekal. Lepaskan kunci:
Selepas menggunakan kunci, padamkan kekunci kunci untuk melepaskan kunci.
Kod pelaksanaan khusus (pseudokod):
def acquire_lock(key, value, expire_time): if redis.setnx(key, value): redis.expire(key, expire_time) return True else: return False def release_lock(key): redis.delete(key)
Salin selepas log masuk
Kelebihan:
- Mudah dan mudah digunakan
- Prestasi tinggi
Kebolehpercayaan
Baik
- Syarat pertandingan :Dalam persekitaran berbilang benang, berbilang benang mungkin cuba memperoleh kunci pada masa yang sama, dan hanya benang pertama akan berjaya memperoleh kunci.
- Kebuntuan:Jika pengecualian berlaku pada benang pemegang kunci dan kunci tidak boleh dilepaskan, ia boleh menyebabkan kebuntuan.
- Masa tamat tempoh:Masa tamat tempoh kunci perlu ditetapkan dengan sewajarnya Jika terlalu pendek, kunci mungkin terlepas secara tidak sengaja, dan jika terlalu lama, kunci mungkin dipegang secara kekal.
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan kunci redis. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!