解放你的手微服务架构下的Redis事务锁(微服务redis事务锁)
显然,在微服务架构的场景中,每个应用服务可以被快速的更新、拆分以及横向伸缩,因而可以轻易的满足业务实时变更的需求。在这种架构中,一般会遇到一个共有的问题——万一数据被不同服务重复写入到,可能发生数据不一致的问题。这里就是Redis事务锁应运而生。Redis是一个开源的、内存高速存取的键值(key-value)存储系统,它可以轻松帮助我们解决分布式应用中的一致性和资源竞争问题,从而解放我们的手。
你要使用SETNX来为这个key创建一个唯一的、持久的锁。以下的例子将会在key testlock下创建一个锁:
“`
SETNX testlock “locked”
使用EXPIRE可以给予这个key一个过期的时间,在这期间之内必须在释放锁,反之则会造成死锁的产生:
``` EXPIRE testlock 10
如果你拥有这个锁,可以使用DEL来进行释放:
“`
DEL testlock
利用Redis事务锁,可以省去引入一些复杂的成本,从而尽量避免在分布式应用中出现多个服务操作同一个key时出现的数据不一致的情况。为了解决这个问题,不断有新思路被提出,例如zookeeper作为分布式协调器,提供主从一致性机制;也有一些嵌入式分布式锁也被构思出来,例如jedis的ShardedJedisClient锁。Redis的事务锁的介入,让人们看到了另一种简洁可行的解决方案,从而解放你的手!
相关文章