写一段 redis 按季度到期的Java代码
时间: 2023-11-28 15:48:43 浏览: 77
Java基于redis实现分布式锁代码实例
以下是一个简单的 Redis 存储并按季度到期的 Java 代码:
```java
import redis.clients.jedis.Jedis;
import java.util.Calendar;
import java.util.Date;
import java.util.Set;
public class RedisQuarterlyExpiration {
private static final String REDIS_KEY_PREFIX = "quarterly_expiration:";
private static final int EXPIRATION_DAYS = 90;
private static final Jedis jedis = new Jedis("localhost", 6379);
public static void main(String[] args) {
// 存入数据
jedis.set("key1", "value1");
jedis.set("key2", "value2");
jedis.set("key3", "value3");
// 设置过期时间为当前时间加上 90 天
Calendar expirationDate = Calendar.getInstance();
expirationDate.setTime(new Date());
expirationDate.add(Calendar.DATE, EXPIRATION_DAYS);
// 将 key 和过期时间存入 Redis
jedis.zadd(REDIS_KEY_PREFIX + "expiration_dates", expirationDate.getTimeInMillis(), "key1");
jedis.zadd(REDIS_KEY_PREFIX + "expiration_dates", expirationDate.getTimeInMillis(), "key2");
jedis.zadd(REDIS_KEY_PREFIX + "expiration_dates", expirationDate.getTimeInMillis(), "key3");
// 获取当前时间
long currentTimeMillis = System.currentTimeMillis();
// 获取所有过期的 key
Set<String> expiredKeys = jedis.zrangeByScore(REDIS_KEY_PREFIX + "expiration_dates",
0, currentTimeMillis);
// 删除过期的 key
for (String expiredKey : expiredKeys) {
jedis.del(expiredKey);
jedis.zrem(REDIS_KEY_PREFIX + "expiration_dates", expiredKey);
}
}
}
```
该代码将存储数据到 Redis 中,并将每个 key 的过期时间存储在 Redis 的有序集合中。然后,它将获取当前时间,并从有序集合中检索所有已过期的 key,并删除它们。这个过程会在代码最后部分完成。
阅读全文