簡體   English   中英

Spring Data Redis 過期密鑰

[英]Spring Data Redis Expire Key

我有一個 One 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"/>

這個redisTemplate在我的 ServiceImpl 類中使用。

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

在這個 expire 方法中,我們需要提供uniqueKey而不是key 但我需要 Expire key而不是uniqueKey

所以請幫助我我可以為過期Key做些什么?

我有一個 One 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"/>

這個redisTemplate在我的 ServiceImpl 類中使用。

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

在這個 expire 方法中,我們需要提供uniqueKey而不是key 但我需要 Expire key而不是uniqueKey

所以請幫助我我可以為過期Key做些什么?

我有一個 One 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"/>

這個redisTemplate在我的 ServiceImpl 類中使用。

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

在這個 expire 方法中,我們需要提供uniqueKey而不是key 但我需要 Expire key而不是uniqueKey

所以請幫助我我可以為過期Key做些什么?

我有一個 One 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"/>

這個redisTemplate在我的 ServiceImpl 類中使用。

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

在這個 expire 方法中,我們需要提供uniqueKey而不是key 但我需要 Expire key而不是uniqueKey

所以請幫助我我可以為過期Key做些什么?

我有一個 One 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"/>

這個redisTemplate在我的 ServiceImpl 類中使用。

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

在這個 expire 方法中,我們需要提供uniqueKey而不是key 但我需要 Expire key而不是uniqueKey

所以請幫助我我可以為過期Key做些什么?

我有一個 One 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"/>

這個redisTemplate在我的 ServiceImpl 類中使用。

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

在這個 expire 方法中,我們需要提供uniqueKey而不是key 但我需要 Expire key而不是uniqueKey

所以請幫助我我可以為過期Key做些什么?

我有一個 One 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"/>

這個redisTemplate在我的 ServiceImpl 類中使用。

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

在這個 expire 方法中,我們需要提供uniqueKey而不是key 但我需要 Expire key而不是uniqueKey

所以請幫助我我可以為過期Key做些什么?

我有一個 One 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"/>

這個redisTemplate在我的 ServiceImpl 類中使用。

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

在這個 expire 方法中,我們需要提供uniqueKey而不是key 但我需要 Expire key而不是uniqueKey

所以請幫助我我可以為過期Key做些什么?

我有一個 One 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"/>

這個redisTemplate在我的 ServiceImpl 類中使用。

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

在這個 expire 方法中,我們需要提供uniqueKey而不是key 但我需要 Expire key而不是uniqueKey

所以請幫助我我可以為過期Key做些什么?

我有一個 One 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"/>

這個redisTemplate在我的 ServiceImpl 類中使用。

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

在這個 expire 方法中,我們需要提供uniqueKey而不是key 但我需要 Expire key而不是uniqueKey

所以請幫助我我可以為過期Key做些什么?

我有一個 One 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"/>

這個redisTemplate在我的 ServiceImpl 類中使用。

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

在這個 expire 方法中,我們需要提供uniqueKey而不是key 但我需要 Expire key而不是uniqueKey

所以請幫助我我可以為過期Key做些什么?

簡單而簡短:通過 RedisConnection

public void saveInCache(String key, Object obj) {

    RedisConnection connection = connectionFactory.getConnection();
    try {
        connection.set(key.getBytes(), SerializationUtils.serialize(obj));
        //setting custom expiry runtime
        long expiresIn = obj.getExpiresAfter() - Instant.now().getEpochSecond(); 
        connection.expire(key.getBytes(), expiresIn);

    } catch (Exception e) {
        //handle any exception
    }
    finally {
        try {
            if (connection != null && !connection.isClosed()) {
                connection.close();
            }

        } catch (Exception e) {
            logger.error("Exception while closing redis connection : " + e.getMessage());
            e.printStackTrace();
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM