gpt4 book ai didi

java - RedisTemplate 过期不起作用

转载 作者:可可西里 更新时间:2023-11-01 11:13:29 26 4
gpt4 key购买 nike

我正在尝试测试 RedisTemplate 中的过期方法。例如,我将 session 存储在 redis 中,然后尝试检索 session 并检查值是否相同。对于过期 session ,我使用 redisTemplate 的 expire() 方法,为了获取过期 session ,我使用 getExpire() 方法。但它不起作用。我如何测试存储在 redis 中的值?

//without import and fields
public class Cache() {

private StringRedisTemplate redisTemplate;

public boolean expireSession(String session, int duration) {
return redisTemplate.expire(session, duration, TimeUnit.MINUTES);
}
}

//Test class without imports and fields
public class TestCache() {

private Cache cache = new Cache();
@Test
public void testExpireSession() {
Integer duration = 16;
String session = "SESSION_123";
cache.expireSession(session, duration);
assertEquals(redisTemplate.getExpire(session, TimeUnit.MINUTES), Long.valueOf(duration));
}
}

但测试失败并出现 AssertionError:

Expected :16 Actual :0

更新:我以为,getExpire() 方法不起作用,但实际上 expire() 方法不起作用。它返回错误。 redisTemplate 是一个自动连接到测试类的 spring Bean。 TestCache 类中还有许多其他测试方法可以正常工作。

最佳答案

我设置了以下代码来对 getExpire()(jedis 2.5.2,spring-data-redis 1.4.2.RELEASE)执行测试:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = DemoApplication.class)
public class DemoApplicationTests {

@Autowired
private RedisTemplate<String, String> template;

@Test
public void contextLoads() {

template.getConnectionFactory().getConnection().flushAll();

assertFalse(template.hasKey("key"));
assertFalse(template.expire("key", 10, TimeUnit.MINUTES));
assertEquals(0, template.getExpire("key", TimeUnit.MINUTES).longValue());

template.opsForHash().put("key", "hashkey", "hashvalue");

assertTrue(template.hasKey("key"));
assertTrue(template.expire("key", 10, TimeUnit.MINUTES));
assertTrue(template.getExpire("key", TimeUnit.MINUTES) > 8);
}

}

根据您的 Redis 配置,如果您重启 Redis 实例,所有 Redis 数据都会消失。

您还应该向 expireSession 添加一个断言 (assertTrue(cache.expireSession(session, duration));) 以确保过期有效。

关于java - RedisTemplate 过期不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30432479/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com