Spring Data Redis 过期键

27

我有一个使用Spring Hibernate框架的应用程序。最近我加入了Spring Data Redis。

spring-servlet.xml
<!-- redis connection factory -->
<bean id="jedisConnFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" p:use-pool="true"/>

<!-- redis template definition -->
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate" 
    p:connection-factory-ref="jedisConnFactory"/>

我在ServiceImpl类中使用了这个redisTemplate

RedisServiceImpl

@Autowired
private RedisTemplate<String, T> redisTemplate;

public RedisTemplate<String, T> getRedisTemplate() {
    return redisTemplate;
}

public void setRedisTemplate(RedisTemplate<String, T> redisTemplate) {
    this.redisTemplate = redisTemplate;
}

现在我像这样在redisServer中添加了数据

public void putData(String uniqueKey, String key, Object results) {
        
    redisTemplate.opsForHash().put(uniqueKey, key, results);
}

现在我想要删除过期的键。

我在谷歌上搜索了一下,但是谷歌上所有的结果都跟这个差不多。

redisTemplate.expire(key, timeout, TimeUnit);
在这个过期方法中,我们需要提供 uniqueKey 而不是 key。但是我需要使 key 过期而不是 uniqueKey。请帮忙告诉我如何让 key 过期?

这个网址(http://docs.spring.io/spring-data/data-redis/docs/1.5.2.RELEASE/api/org/springframework/data/redis/core/RedisTemplate.html#expire(K,%20long,%20java.util.concurrent.TimeUnit))没有提到uniqueKey。您可以将key传递给expire函数。 - shazin
是的,你说得对。在这个url中没有提到uniqueKey。但是在实现中,当我使用uniqueKey时,这个uniqueKey过期了。但是当我使用key时,这个key没有过期。 - Akash Chavda
唯一键被视为整个哈希的关键,因此可以为此哈希过期键。除非您需要手动删除哈希键和值。 - Nebras
11个回答

0

我曾经遇到过同样的问题。唯一的区别在于使用了Jedis客户端。我通过改变UniqueKey和Key的位置来解决了这个问题。 对于你的例子,应该是这样的:

redisService.sadd(key, uniqueKey);
redis.expire(key, expirationTime);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接