DeathWhispers

如何设计一个分布式锁?如何对锁性能进行优化?

如何设计一个分布式锁?如何对锁性能进行优化? 分布式锁的本质:就是在所有进程都能访问到的一个地方设置一个锁资源,让这些进程都来竞争锁资源。(保证只有一个进程获取资源)数据库、zookeeper、redis等。通常对于分布式锁,会要求响应快、性能高、与业务无关。 如何使用redis实现分布式锁 SETNX key value:当key不存在时,将key设置为value,并返回1。如果ke...

如何使用 Redis 实现分布式锁?

如何使用 Redis 实现分布式锁? Redis 实现分布式锁,需要考虑如下几个方面: 1、正确的获得锁 set 指令附带 nx 参数,保证有且只有一个进程获得到。 2、正确的释放锁 使用 Lua 脚本,比对锁持有的是不是自己。如果是,则进行删除来释放。 3、超时的自动释放锁 set 指令附带 expire 参数,通过过期机制来实现超时释放。 4、未获得到锁的等待机制 sl...