Redis ne prend pas en charge le mécanisme de verrouillage natif en lecture-écriture. Les solutions incluent : des outils tiers : RedLock ou RwLock ; des solutions personnalisées : basées sur des jetons : utilisant les clés read_lock et write_lock ; basées sur des variables de condition : utilisant une clé de verrouillage avec un nombre aléatoire.
Verrouillage en lecture-écriture Redis : solution
Redis est une base de données en mémoire et ne prend pas en charge le mécanisme de verrouillage natif en lecture-écriture. Par conséquent, des outils tiers ou des solutions personnalisées doivent être utilisés pour implémenter la fonctionnalité de verrouillage en lecture-écriture.
Outils tiers
Solution personnalisée
Basée sur un mécanisme de jeton :
read_lock
etwrite_lock
.read_lock
和write_lock
。read_lock
的值递增。read_lock
的值递减。write_lock
的值设置为 1。write_lock
的值重置为 0。基于条件变量:
lock
,它的值是一个原子操作生成的随机数。lock
的值和自己的随机数,如果相等,则获得读锁。lock
的值。lock
的值。lock
read_lock
est incrémentée.
Lorsque le client libère le verrou de lecture, la valeur deread_lock
est décrémentée.Lorsque le client acquiert le verrou en écriture, la valeur dewrite_lock
est définie sur 1.
write_lock
est réinitialisée à 0.
Définissez une clélock
dont la valeur est un nombre aléatoire généré par une opération atomique.Lorsque le client tente d'acquérir le verrou de lecture, il compare la valeur delock
avec son propre nombre aléatoire. S'ils sont égaux, le client acquiert le verrou de lecture.
Lorsque le client libère le verrou de lecture, réinitialisez la valeur delock
.
lock
.
lock
.Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!