- キャッシュ機能
Redisのプロジェクトは通常、データベースとして、キャッシュとしてMySQLを使用します。データを取得するクエリは、データベースクエリおよびキャッシュからのRedisへのRedisを起動し、そうでない場合。共通のパラメータ(周波数およびバッチプレ制限の促進)についての値、ビジネス・オブジェクト(ユーザデータ、車両)の値は、データキャッシュ。典型的には、キャッシュの有効期限がキャッシュカトン集団故障している、のRedisの影響は、読み取りおよび書き込み操作Redisのを防止するために、いくつかの間隔に設定されることに注意することは、データキャッシュの有効期限に設定されます。
- 周波数限界
サードパーティ製のプラグインは、コストを削減し、お金節約、周波数限界を充電されました。SMSサービス、通常、電話のコードを送信するメッセージ認証コードを送信するために、同じユーザー1分を制限し、不正な追跡、一日一回同じクエリ内のナンバープレートの制限。SMSサービスのコード例は次のとおりです。
String phone = "15123456366";
String msgLimitKey = "msg:limit:" + phone;
boolean canBeSent = redisTemplate.opsForValue().setIfAbsent(msgLimitKey, "1", Duration.ofSeconds(60));
if (canBeSent) {
// TODO send msg
} else {
// 限制频率
}
活動を販売するため、商品を転売牛を制限するためには、同じ製品を購入するユーザーの数が制限されます。例えば、電車の切符、スパイク商品の販売。サンプルコードのプロモーションホット商品次のように:
int limitCount = 5;
long goodsId = 1l;
Date activityExpiredDate = DateUtil.tomorrow();
String goodsLimitKey = "goods:limit:" + goodsId;
boolean canBuy = redisTemplate.opsForValue().increment(goodsLimitKey) <= limitCount;
redisTemplate.expireAt(goodsLimitKey, activityExpiredDate);
if (canBuy) {
// TODO 购买商品
} else {
// 限制频率
}
メッセージキューを使用すると、メッセージを消費すると、メッセージが冪等プロセスである必要があり、例えば、成功した支払指図のステータスを変更しました。サンプルコード:
String msgId = "7311eb92-f395-4bad-9a68-a9c8d1800b07";
String msgLimitKey = "mq:msg:" + msgId;
boolean canHandleMsg = redisTemplate.opsForValue().setIfAbsent(msgLimitKey, "1", Duration.ofHours(1));
if (canHandleMsg) {
// TODO 处理消息
}else {
// 限制频率
}
- ユーザーセッション
分散型では、あるユーザログイン認証、の単純な実装は、ユーザーが正常にログインした後、ユーザー情報はRedisのに保存されています。たびにユーザーがログインまたは更新中のRedisから取得したユーザ濃縮物を。