En escenarios empresariales, no se permiten operaciones simultáneas de contenido, como inventario de mercancías, el mismo archivo, etc., y la aplicación del programa se despliega en varios servidores.
El bloqueo distribuido basado en zk previamente escrito es el siguiente:
Lo que también necesitas saber para leer este artículo:
.NET Core implementa bloqueos distribuidos basados en RedisEl principio es llamar al comando SETNX de redis, si la clave ya existe, el comando SETNX no hace nada. El comando devuelve 1 cuando la configuración tiene éxito y 0 cuando falla.
El inicio de sesión del hipervínculo es visible.
Crea un nuevo proyecto de consola .NET Core 3.1, añade una referencia a StackExchange.Redis y utiliza el comando nuget de la siguiente manera:
Llamamos al método StringSet de la biblioteca, a través del código fuente StackExchange.Redis, podemos ver que el método StringSet llamará al método privado GetStringSetMessage para ejecutar diferentes comandos de conjunto mediante el valor de enumeración de cuando, el código es el siguiente:
Ejecutamos el comando SETNX 2000 veces mediante una llamada de prueba paralela al programa, que se ejecuta en 2 entregas, en las que la validez de la caché de la clave es de 5 segundos, es decir, la clave se liberará automáticamente tras 5 segundos, es decir, el bloqueo se liberará.
El código es el siguiente:
Como puedes ver, un total de 2 inserciones exitosas y 1998 intentos fallidos son exactamente lo que esperábamos, y los renders son los siguientes:
Por el momento, la cerradura aún no ha sido liberada. (Fin)
|