Classification de verrouillage Redis
Les commandes de verrouillage qui peuvent être utilisées par Redis sont INCR, SETNX et SET.
1. La première commande de verrouillage INCR
L'idée de ce type de verrouillage est que si la clé n'existe pas, alors la valeur de la clé sera d'abord initialisée à 0, puis l'opération INCR sera exécutée.
Ensuite, lorsque d'autres utilisateurs effectuent l'opération INCR pour en ajouter un, si le nombre renvoyé est supérieur à 1, cela signifie que le verrou est utilisé.
1. Le client A demande au serveur d'obtenir la valeur de clé de 1, ce qui signifie que le verrou est obtenu
2. Le client B demande également au serveur d'obtenir la valeur de clé de 2, ce qui signifie que l'acquisition du verrou échoue
3. Le client A termine l'exécution du code et supprime le verrou
4 Le client B attend un certain temps et obtient la valeur de clé de 1. lors d'une demande, indiquant que l'acquisition du verrou est réussie
5. Le client B exécute le code et supprime le verrou
$redis->incr($key); $redis->expire($key, $ttl); //设置生成时间为1秒
2 Le deuxième verrou SETNX
L'idée. derrière ce type de verrouillage, c'est que si la clé n'existe pas, définissez la clé sur valeur
Si la clé existe déjà, SETNX n'effectue aucune action
1. pour définir la valeur de la clé. Si le réglage est réussi, cela signifie que le verrouillage est réussi
2. Le client B demande également au serveur de définir la valeur de la clé. Si le retour échoue, cela signifie que le verrouillage a échoué.
3. Le client A termine l'exécution du code et supprime le verrou
4. Client Après avoir attendu un certain temps, le client B demande de définir la valeur de la clé et le réglage est réussi
3. 🎜>
5. Le client B termine l'exécution du code et supprime le verrou$redis->setNX($key, $value); $redis->expire($key, $ttl);
$redis->set($key, $value, array('nx', 'ex' => $ttl)); //ex表示秒
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!