Redisson:使用 Spring 缓存锁定

Redisson: Locking with Spring cache

Redisson 支持由 Redis 支持的锁定。它还提供了使用 spring 缓存框架的实现。但是根据我所见,当尝试使用 spring 缓存框架更新缓存中的键时,默认情况下不会调用锁定。 Redisson 有单独的 API 来锁定特定的键。那是对的吗?

此外,锁定 API 似乎将密钥作为输入,因此我不清楚锁定是如何工作的。对于锁定,我假设您需要缓存名称和密钥。

我是 Redis 的新手,所以非常感谢任何对此有所了解的帮助。谢谢

首先,Redisson中的锁是由Redis实现的,而不只是用于Redis更新。

例如,如果你想实现这样的原子操作:

  1. 从 Redis 获取键值
  2. 根据某种逻辑计算新值
  3. 将新值保存到Redis并Mysql

您可以使用 Redisson 锁以原子方式进行操作。

其次,在Redis中,set/update命令是原子的,如果只更新值,则不需要锁定键。

而对于加锁API,Redisson通过Redis实现加锁key/value,所以只需要提供lock-key,一般包含资源id和资源类型(如"lock:user:31352")