Quantcast
Channel: Active questions tagged redis+java - Stack Overflow
Viewing all articles
Browse latest Browse all 2204

How to fetch cached value using redisson client

$
0
0

I wanted to fetch cached(@Cachable) value using redisson client but it return strange data if i use any codec in redisson client (getBucket("fruit::1",StringCodec.INSTANCE)) and it throws error unless i use codec.

i have used below code for caching

    @Cacheable(value = "fruits", key = "#id")    public Fruit getFruitById(int id) {    // get fruit by id    CriteriaBuilder builder = em.getCriteriaBuilder();    CriteriaQuery<Fruit> query = builder.createQuery(Fruit.class);    Root<Fruit> root = query.from(Fruit.class);    query.select(root);    query.where(builder.equal(root.get("id"), id));    TypedQuery<Fruit> fruitQuery = em.createQuery(query);    return fruitQuery.getSingleResult();}

When i use codec for getting that cached data

    RBucket<String> bucket = client.getBucket("fruits::1",            StringCodec.INSTANCE);    String fruit = bucket.get();

It returns following strange data

��srcom.home.redis.Fruit��.ܵo*rIidIpriceLnametLjava/lang/String;xp,tpomegrantite

RedisConfiguration

@Beanpublic RedisCacheConfiguration cacheConfiguration() {    RedisCacheConfiguration cacheConfig = RedisCacheConfiguration            .defaultCacheConfig().entryTtl(Duration.ofSeconds(600))            .disableCachingNullValues();    return cacheConfig;}@Beanpublic RedisCacheManager cacheManager() {    RedisCacheManager rcm = RedisCacheManager            .builder(this.getRedissonStoreFactory())            .cacheDefaults(cacheConfiguration()).transactionAware().build();    return rcm;}@Bean@Primarypublic RedisProperties redisProperties() {    return new RedisProperties();}@Beanpublic RedissonConnectionFactory getRedissonStoreFactory() {    return new RedissonConnectionFactory(getConfig());}@Beanpublic RedissonNode getNode() {    RedissonNodeConfig nodeConfig = new RedissonNodeConfig(getConfig());    nodeConfig.setExecutorServiceWorkers(            Collections.singletonMap("ensimp", 1));    RedissonNode node = RedissonNode.create(nodeConfig);    node.start();    return node;}@Beanpublic Config getConfig() {    Config config = new Config();    RedisProperties properties = redisProperties();    config.useSingleServer().setAddress("redis://"+ properties.getHost() +":"+ properties.getPort());    return config;}

redisson.json

{"singleServerConfig":{"idleConnectionTimeout":500,"connectTimeout":1000,"timeout":3000,"retryAttempts":3,"retryInterval":1500,"password":null,"subscriptionsPerConnection":5,"clientName":null,"address": "redis://127.0.0.1:6379","subscriptionConnectionMinimumIdleSize":0,"subscriptionConnectionPoolSize":1,"connectionMinimumIdleSize":0,"connectionPoolSize":20,"database":0,"dnsMonitoringInterval":5000},"threads":16,"nettyThreads":32,"codec":{"class":"org.redisson.codec.FstCodec"     },"transportMode":"NIO"}

i've used fst codec too but got the same strange data. i want correctly decoded data it'd be great if anyone help me with a right code.


Viewing all articles
Browse latest Browse all 2204

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>