I have class for operations with Redis using StringRedisTemplate
public void addRoMap(String key, Boolean value) { redisTemplate.boundHashOps("test").put(key, value.toString()); redisTemplate.expire(key, 5, TimeUnit.SECONDS);}public Map getMap() { return redisTemplate.opsForHash().entries("test");}public void flush() { redisTemplate.getConnectionFactory().getConnection().flushAll();}
I have test:
@Testpublic void redisHashTest() throws InterruptedException { wsRedisMessageSender.flush(); Map<String, String> map = (Map<String, String>) wsRedisMessageSender.getMap(); System.out.println(map); wsRedisMessageSender.addRoMap("test1", false); wsRedisMessageSender.addRoMap("test2", true); Assertions.assertThat(wsRedisMessageSender.getMap().size()).isEqualTo(2); map = (Map<String, String>) wsRedisMessageSender.getMap(); System.out.println(map); Thread.sleep(10000); map = (Map<String, String>) wsRedisMessageSender.getMap(); System.out.println(map); Assertions.assertThat(wsRedisMessageSender.getMap().size()).isEqualTo(0);}
However, this test fails:
{} {test1=false, test2=true} {test1=false, test2=true}Expecting:<2>to be equal to:<0>
Please, help me, why I still have values in my Hash after timeout?Also, will my Hash ("test") exist after all keys expired?