Skip to content

Commit 3e3afe1

Browse files
committed
feat
coroutines and redission rlock
1 parent 8930503 commit 3e3afe1

File tree

1 file changed

+27
-25
lines changed
  • app/src/main/kotlin/redis_kotlin

1 file changed

+27
-25
lines changed

app/src/main/kotlin/redis_kotlin/App.kt

+27-25
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,7 @@ class App {
279279
batch.execute()
280280
rf1?.toCompletableFuture()?.thenApply { println("rf1 fastPutAsync result: $it") }
281281
rf2?.toCompletableFuture()?.thenApply { println("rf2 putAsync result: $it") }
282+
// @TODO: dbl check
282283
}
283284

284285
private fun multiLock(redissonClient: RedissonClient) {
@@ -302,22 +303,23 @@ class App {
302303
private suspend fun coroutinesLock(redissonClient: RedissonClient, range: IntProgression = (1 until 5)) {
303304
printHelper("coroutinesLock")
304305
val delayTime: Long = 1000L
305-
306+
//@TODO: hier weiter
307+
val redissonReactive: RedissonReactiveClient = redissonClient.reactive()
306308
val scope = CoroutineScope(Dispatchers.IO + SupervisorJob())
307309
range.map { entry -> // @TODO: with v1.9 use range until:
308310
// https://www.lotharschulz.info/2022/10/03/setup-new-kotlin-range-operator-rangeuntil/
309311
// https://github.com/lotharschulz/redis_kotlin/issues/19
310312
scope.launch(CoroutineIdentifier(identifier = entry.toLong())) {
311-
val lock = redissonClient.getLock("l$entry")
313+
val lock = redissonReactive.getLock("l$entry")
312314
val id:Long? = currentCoroutineContext()[CoroutineIdentifier.CoroutineKey]?.identifier
313315
if (null != id) {
314-
lock.lockAsync(id).toCompletableFuture().join()
316+
lock.lock(id)
315317
try {
316-
println("lock acquired")
318+
println("lock(id: $id) acquired")
317319
delay(delayTime)
318320
} finally {
319-
lock.unlockAsync().toCompletableFuture().join()
320-
println("lock released")
321+
lock.unlock(id)
322+
println("lock(id: $id) released")
321323
}
322324
}
323325
}
@@ -368,28 +370,28 @@ class App {
368370
fun doRedisStuff(): Boolean {
369371
return when (val redisson = redissonClient()) {
370372
is RClient.Success -> {
371-
// atomicLong(redisson.redissonClient, 3L)
372-
// atomicLongAsync(redisson.redissonClient, 3L)
373-
// atomicLongReactive(redisson.redissonClient, 3L)
374-
// atomicLongRXJava3(redisson.redissonClient, 3L)
375-
// Thread.sleep(1000) // wait for 1 second to complete RX operations
376-
// runBlocking {
377-
// atomicLongCoroutines(redisson.redissonClient)
378-
// }
379-
// bucket(redisson.redissonClient, "foo", "bar") // buckets
380-
// `object`(redisson.redissonClient, 100, 10, "some author")
381-
// topic(redisson.redissonClient, "new message")
382-
// keys(redisson.redissonClient, "test1", "test2")
383-
// collections(redisson.redissonClient, "321", "value")
384-
// set(redisson.redissonClient, 42, 88, "icke")
385-
// list(redisson.redissonClient, 24, 33, "you")
386-
// scripting(redisson.redissonClient, "foo-bar")
387-
// pipeline(redisson.redissonClient, 1, 2, 3, 4)
388-
// multiLock(redisson.redissonClient)
373+
atomicLong(redisson.redissonClient, 3L)
374+
atomicLongAsync(redisson.redissonClient, 3L)
375+
atomicLongReactive(redisson.redissonClient, 3L)
376+
atomicLongRXJava3(redisson.redissonClient, 3L)
377+
Thread.sleep(1000) // wait for 1 second to complete RX operations
378+
runBlocking {
379+
atomicLongCoroutines(redisson.redissonClient)
380+
}
381+
bucket(redisson.redissonClient, "foo", "bar") // buckets
382+
`object`(redisson.redissonClient, 100, 10, "some author")
383+
topic(redisson.redissonClient, "new message")
384+
keys(redisson.redissonClient, "test1", "test2")
385+
collections(redisson.redissonClient, "321", "value")
386+
set(redisson.redissonClient, 42, 88, "icke")
387+
list(redisson.redissonClient, 24, 33, "you")
388+
scripting(redisson.redissonClient, "foo-bar")
389+
pipeline(redisson.redissonClient, 1, 2, 3, 4)
390+
multiLock(redisson.redissonClient)
389391
runBlocking {
390392
coroutinesLock(redisson.redissonClient)
391393
}
392-
// mapCache(redisson.redissonClient, "cache", "cacheKey", "cache test value", 1000L)
394+
mapCache(redisson.redissonClient, "cache", "cacheKey", "cache test value", 1000L)
393395
redisson.redissonClient.shutdown()
394396
true
395397
}

0 commit comments

Comments
 (0)