創造し続け、成長を加速!「ナゲッツデイリー新プラン・10月アップデートチャレンジ」参加20日目、イベント詳細はこちら
導入
Redissonは、 Redisに基づく Java インメモリ データ グリッドです。これは、Redis キー値データベースによって提供される一連の利点を最大限に活用し、Java ユーティリティ ツールキットの共通インターフェイスに基づいて分散された特性を持つ一連の共通ツール クラスをユーザーに提供します。単一マシンのマルチスレッド並行プログラムを調整するために最初に使用されたツールキットは、分散マルチマシンおよびマルチスレッド並行システムを調整する機能を獲得しました。これにより、大規模な分散システムの設計と開発の困難さが大幅に軽減されます。同時に、特性の豊富な分散サービスを組み合わせることで、分散環境におけるプログラム間の連携をさらに簡素化します。
Redisson は NIO ベースのNettyフレームワークを採用しており, Redis の基盤となるドライバ クライアントとして機能するだけでなく, Redisのさまざまな構成形式の接続機能も提供します. Redis コマンドは同期的,非同期的,非同期的にストリームまたはパイプラインで送信できます.送信機能、LUA スクリプトの実行処理、および返された結果を処理する機能もこれに基づいてより高度なアプリケーション スキームに統合されます。Java. , , , , ,などの構造に基づいて、Redisが本来持っていなかった分散, , , , , , , , , , ,などの分散データ構造も提供します。それだけでなく、Redissonは Redis のドキュメントに記載されている分散ロックも実装しています。Hash
List
Set
String
Geo
HyperLogLog
映射(Map)
列表(List)
集(Set)
通用对象桶(Object Bucket)
地理空间对象桶(Geospatial Bucket)
基数估计算法(HyperLogLog)
多值映射(Multimap)
本地缓存映射(LocalCachedMap)
有序集(SortedSet)
计分排序集(ScoredSortedSet)
字典排序集(LexSortedSet)
列队(Queue)
阻塞队列(Blocking Queue)
有界阻塞列队(Bounded Blocking Queue)
双端队列(Deque)
阻塞双端列队(Blocking Deque)
阻塞公平列队(Blocking Fair Queue)
延迟列队(Delayed Queue)
布隆过滤器(Bloom Filter)
原子整长形(AtomicLong)
原子双精度浮点数(AtomicDouble)
BitSet
Lock
このような高レベルのアプリケーション シナリオ。実際、Redisson はそれだけにとどまらず、分散ロックに基づいて、実際のマルチスレッドの高同時実行アプリケーションに不可欠な 、 、 、 、およびこれらの基本コンポーネント联锁(MultiLock)
も读写锁(ReadWriteLock)
提供公平锁(Fair Lock)
し红锁(RedLock)
ます。Redisson が分散システムを構築するための重要なツールになるのは、Redis に基づく高レベルのアプリケーション ソリューションの実現によるものです。信号量(Semaphore)
可过期性信号量(PermitExpirableSemaphore)
闭锁(CountDownLatch)
使用手順
1. jar パッケージを導入する
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>2.7.0</version>
</dependency>
复制代码
2.構成
public class RedissonManager {
private static Config config = new Config();
//声明redisso对象
private static Redisson redisson = null;
//实例化redisson
static{
config.useSingleServer().setAddress("127.0.0.1:6379");
//得到redisson对象
redisson = (Redisson) Redisson.create(config);
}
//获取redisson对象的方法
public static Redisson getRedisson(){
return redisson;
}
}
复制代码
3. ロックの取得と解放
public class DistributedRedisLock {
//从配置类中获取redisson对象
private static Redisson redisson = RedissonManager.getRedisson();
private static final String LOCK_TITLE = "redisLock_";
//加锁
public static boolean acquire(String lockName){
//声明key对象
String key = LOCK_TITLE + lockName;
//获取锁对象
RLock mylock = redisson.getLock(key);
//加锁,并且设置锁过期时间,防止死锁的产生
mylock.lock(2, TimeUnit.MINUTES);
System.err.println("======lock======"+Thread.currentThread().getName());
//加锁成功
return true;
}
//锁的释放
public static void release(String lockName){
//必须是和加锁时的同一个key
String key = LOCK_TITLE + lockName;
//获取所对象
RLock mylock = redisson.getLock(key);
//释放锁(解锁)
mylock.unlock();
System.err.println("======unlock======"+Thread.currentThread().getName());
}
}
复制代码
いいね、コメントよろしくお願いしますヾ(◍°∇°◍)ノ゙