node.js—使用redis在java和nodejs应用程序之间进行分布式锁定

2guxujil  于 2021-06-09  发布在  Redis
关注(0)|答案(0)|浏览(273)

在我当前的项目中,我处理两个进程,一个用java编写,另一个用nodejs编写。这两个应用程序都会进行一些计算,并在redis中存储一些数据,但出于某种一致性原因,一次只能有一个应用程序访问redis资源。在阅读了redis的官方文档之后(https://redis.io/topics/distlock),我想使用redlock算法进行分布式锁定。我发现当我使用node redlock(推荐的nodejs库)来锁定一个key'redis lock'时,它在redis中存储了一个随机值和到期时间,而在使用redisson(推荐的java库)来锁定相同的'redis lock'时;它存储一个散列。当java进程已经创建并锁定了密钥,nodejs进程试图访问它时,我遇到了一些错误,因为它希望密钥的类型是simple string而不是hash。我不明白为什么实现相同算法的两个库使用不同的数据结构来锁定密钥。请帮我解决这个问题。否则,有没有其他简单的解决方案来实现两个应用程序之间的分布式锁(我知道我也可以使用db,但是我想使用redis,因为它已经在应用程序上下文中使用了)?谢谢您。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题