package Ġcom . github . sh ah riv ari . red ip per . redis Ċ Ċ import Ġcom . github . sh ah riv ari . red ip per . config . Redis Config Ċ import Ġcom . google . common . collect . Hash Multi set Ċ import Ġio . lett uce . core . Abstract Redis Client Ċ import Ġio . lett uce . core . Client Options Ċ import Ġio . lett uce . core . Redis Client Ċ import Ġio . lett uce . core . Redis URI Ċ import Ġio . lett uce . core . api . State ful Redis Connection Ċ import Ġio . lett uce . core . cluster . Cluster Client Options Ċ import Ġio . lett uce . core . cluster . Redis Cluster Client Ċ import Ġio . lett uce . core . cluster . api . State ful Redis Cluster Connection Ċ import Ġio . lett uce . core . codec . ByteArray Codec Ċ import Ġio . lett uce . core . resource . Default Client Resources Ċ import Ġio . lett uce . core . resource . Default EventLoop Group Provider Ċ import Ġmu . Kotlin Logging Ċ import Ġjava . util .* Ċ Ċ abstract Ġclass ĠRedis Dao Factory Ġ{ ĊĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠKotlin Logging . logger Ġ{} ĊĊĠĠĠ Ġprivate Ġval Ġclient Resources Ġ= ĠDefault Client Resources . builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. io ThreadPool Size ( Default Client Resources . MIN _ IO _ THREADS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. computation ThreadPool Size ( Default Client Resources . MIN _ IO _ THREADS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. event Loop Group Provider ( Default EventLoop Group Provider ( Default Client Resources . MIN _ IO _ THREADS )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġprivate Ġval Ġoptions Ġ= ĠCluster Client Options . builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. auto Re connect ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. ping Before Activate Connection ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. disconnected Behavior ( Client Options . Disconnected Behavior . RE JECT _ COMMAND S ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprotected Ġval Ġclients Ġ= ĠCollections . synchronized Map ( mutable Map Of < String , ĠAbstract Redis Client >()) ĊĠĠĠĠĠĠĠ Ġprotected Ġval Ġactive Count Ġ= ĠHash Multi set . create < String >() ĊĊĠĠĠĠĠĠĠ Ġfun Ġclose ( config : ĠRedis Config ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclient Ġ= Ġclients [ config . uri Signature ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactive Count . remove ( config . uri Signature ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! active Count . contains ( config . uri Signature )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcheckNotNull ( client ) Ġ{ Ġ" Redis Ġclient Ġ${ config . uri Signature } Ġdoes Ġnot Ġexist ." Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclient . shutdown () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclients . remove ( config . uri Signature ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġcreate ( redis URI : ĠRedis URI , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpub sub : ĠBoolean ): ĠStateful Redis Connection < ByteArray , ĠByteArray > Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactive Count . add ( redis URI . signature ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġredis Client Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclients . get Or Put ( redis URI . signature ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcli Ġ= ĠRedis Client . create ( client Resources , Ġredis URI ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcli . options Ġ= Ġoptions ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ get Or Put Ġcli ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġas ĠRedis Client ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( pubsub ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġredis Client . connect Pub Sub ( ByteArray Codec ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġredis Client . connect ( ByteArray Codec ()) ĊĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error ( e ) Ġ{ Ġ" Error Ġin Ġconnecting Ġto Ġ${ redis URI . signature }" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Error Ġin Ġconnecting Ġto Ġ${ redis URI . signature }", Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġcreate Cluster Connection ( redis UR Is : ĠList < Redis URI >): ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStateful Redis Cluster Connection < ByteArray , ĠByteArray > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactive Count . add ( redis UR Is . signature ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġredis Client Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclients . get Or Put ( redis UR Is . signature ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcli Ġ= ĠRedis Cluster Client . create ( client Resources , Ġredis UR Is ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcli . set Options ( options ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ get Or Put Ġcli ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġas ĠRedis Cluster Client ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġredis Client . connect ( ByteArray Codec ()) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error ( e ) Ġ{ Ġ" Error Ġin Ġconnecting Ġto Ġ${ redis UR Is . signature }" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Error Ġin Ġconnecting Ġto Ġ${ redis UR Is . signature }", Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ