使用Redis在Java和Nodejs应用程序之间进行分布式锁定

时间:2020-03-23 12:55:43

标签: java node.js redis redisson

在我当前的项目中,我有两个处理两个过程的过程,一个是用Java编写的,另一个是在NodeJ中编写的。 这两个应用程序都进行一些计算并在Redis中存储一些数据,但是出于某种一致性原因,它们中只有一个应一次访问Redis资源。 阅读Redis(https://redis.io/topics/distlock)的官方文档后,我认为可以使用Redlock算法进行分布式锁定。 我发现当我使用node-redlock(NodeJS的推荐库)来锁定键“ redis-lock”时,它以随机值和到期时间存储在Redis中,而使用Redisson(Java的推荐库)来锁定同样的“重新锁定”;键,它存储一个哈希。 当Java进程已经创建并锁定了密钥并且NodeJs进程尝试访问它时,我遇到了一些错误,因为它期望密钥的类型为简单字符串而不是哈希。 我不明白为什么两个实现相同算法的库使用不同的数据结构来锁定密钥。 请帮助我解决问题。 否则,是否还有其他简单的解决方案来实现两个应用程序之间的分布式锁定(我知道我也可以使用数据库,但是想使用Redis,因为它已在应用程序上下文中使用)? 谢谢。

0 个答案:

没有答案