Hap*_*ppy 6 java spring redis jedis spring-boot
我想用春天来理解redis/jedis.我被困在某个地方,在一段时间后我无法使我的钥匙到期.
有人可以帮忙吗?
public class SessionCacheRepositoryImpl implements SessionCacheRepository {
private static final String KEY = "Session";
private RedisTemplate<String, Object> redisTemplate;
private HashOperations hashOperations;
@Autowired
public SessionCacheRepositoryImpl(RedisTemplate<String, Object> redisTemplate) {
this.redisTemplate = redisTemplate;
}
@PostConstruct
private void init() {
hashOperations = redisTemplate.opsForHash();
redisTemplate.expire(KEY, 30, TimeUnit.SECONDS);
}
public void saveSession(final Session session) {
hashOperations.put(KEY, session.getSessionID(), session);
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的配置类
private RedisTemplate<String, Object> template;
@Bean
JedisConnectionFactory jedisConnectionFactory() {
JedisConnectionFactory jedisConFactory = new JedisConnectionFactory();
jedisConFactory.setHostName("localhost");
jedisConFactory.setPort(36919);
return jedisConFactory;
}
@Bean
public RedisTemplate<String, Object> redisTemplate() {
template = new RedisTemplate<String, Object>();
template.setConnectionFactory(jedisConnectionFactory());
template.setValueSerializer(new GenericToStringSerializer<Object>(Object.class));
return template;
}
Run Code Online (Sandbox Code Playgroud)
调用redisTemplate.expire(KEY, 30, TimeUnit.SECONDS)将在init方法中进行,该方法将在依赖注入之后调用,以初始化您的类.此时,密钥Session不存在,因此调用expire命令无效.有关完整说明,请参阅EXPIRE的Redis.io 说明.您可以通过捕获expire命令的返回结果并记录结果来测试它.
expire您应该在save方法中调用它,而不是调用init方法,以便在保存时设置会话的到期时间.
| 归档时间: |
|
| 查看次数: |
7482 次 |
| 最近记录: |