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.