examples-spring-redis-amq

Форк
0
44 строки · 1.6 Кб
1
package com.tasks.cache.service
2

3
import com.tasks.cache.Cache
4
import org.redisson.api.RedissonClient
5
import org.slf4j.LoggerFactory
6
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
7
import org.springframework.context.annotation.Primary
8
import org.springframework.stereotype.Component
9
import java.io.Serializable
10
import java.util.concurrent.TimeUnit
11

12

13
@Component
14
@Primary
15
@ConditionalOnProperty(prefix = "", name = ["redis.host"])
16
class RedisCache(private val redissonClient: RedissonClient) : Cache<Serializable> {
17
    //TODO LT?? - may be switch to NEAR (local) cache
18
    private val msgSuffix = "messages:"
19
    private val msgExpSuffix = "messages_exp:" //diff space for possibility of getting the value
20
    var logger = LoggerFactory.getLogger(RedisCache::class.java)!!
21
    override fun get(key: String): Serializable? {
22
        logger.debug("get with key $key")
23
        return redissonClient.getBucket<Serializable>("$msgSuffix$key").get()
24
    }
25

26
    override fun put(key: String, value: Serializable, expiry:Long) {
27
        logger.debug("put with key $key and expiry=$expiry")
28
        redissonClient.getBucket<Serializable>("$msgSuffix$key").set(value)
29
        if (expiry>0) {
30
            redissonClient.getBucket<String>("$msgExpSuffix$key").set("_", expiry,TimeUnit.SECONDS)
31
        }
32
    }
33

34
    override fun delete(key: String): Serializable? {
35
        logger.debug("delete with key $key")
36
        val bucket = redissonClient.getBucket<Serializable>("$msgSuffix$key")
37
        val result = bucket.get()
38
        bucket.delete()
39
        redissonClient.getBucket<String>("$msgExpSuffix:$key").delete()
40
        return result
41
    }
42

43

44
}

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.