Срок действия ключа джедая

Я пытаюсь понять 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);
    }
}

И это мой конфиг класс

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;
}

1 ответ

Решение

Призыв к redisTemplate.expire(KEY, 30, TimeUnit.SECONDS) происходит в вашем методе init, который будет вызван после внедрения зависимости для инициализации вашего класса. На данный момент ключ Session не существует, поэтому вызов команды expire не имеет никакого эффекта. См. Описание Redis.io для EXPIRE для полного описания. Вы можете проверить это, зафиксировав возвращаемый результат из команды expire и записав результаты.

Вместо звонка expire в методе init вы должны вызывать его в методе save, чтобы установить время истечения сеанса при его сохранении.

Другие вопросы по тегам