1.キャッシュの浸透
2.雪崩をキャッシュする
3.キャッシュの内訳
Redisは分散ロックを実装しています
業務遂行時の異常やサーバーのダウンを防ぐため、ロックを解除してデッドロックを発生させないため、業務を遂行する前に有効期限を追加する必要があります。
ロックと有効期限を別々に実行して、アトミックであることを確認することはできません。
ここで削除されたロックは自分のロックではない可能性があるため、ロックを追加するときは、uuidを入れて自分のロックであることを確認する必要があります。次に、それを取り出して自分のロックであると判断します。この2つの操作アトミックではないため、luaスクリプトを使用する必要があります。ロックを削除します。
Redissonを使用して分散ロックを実装する
彼は私たちの以前の論理を単純化し、それをより強力にすることができます。
- ロックを自動的に更新し、デフォルトで30秒を自動的に追加します
- ロック解除の問題について心配する必要はありません。
通常、有効期限を手動で指定する必要があります。そうしないと、複雑な内部拡張戦略に時間がかかります。
読み取り/書き込みロック
Redissonを使用する
1.依存関係を追加します
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>3.14.1</version>
</dependency>
2.構成
@Configuration
public class RedissonConfig {
@Bean(destroyMethod = "shutdown")
public RedissonClient redisson() {
// 1. Create config object
Config config = new Config();
config.useSingleServer().setAddress("redis://39.96.41.98:6379");
return Redisson.create(config);
}
}
Redisデータの整合性