redis实用中的问题

JAVA学习网 2020-12-18 00:00:01

1. 同一个key,更新值后必须重新设置过期时间

代码:

try {
            // 1. 设置客户端IP地址和端口
            Jedis jedis = new Jedis("127.0.0.1", 6379);
            long unixTime = 1608173916000L;
            for (int i = 0; i < 20; i++) {
                System.out.println("----------------");
                // 缓存数据
                jedis.set("tt", "test1");
                // 设置数据过期时间
                long status = jedis.expireAt("tt", unixTime);
                System.out.println("过期时间设置结果:" + status);
                System.out.println("缓存的数据(设置过期过期):" + jedis.get("tt"));
                Thread.sleep(1000 * 5);
                jedis.set("tt", "test2");
                // 同一个key不重新设置过期时间时,更新后过期时间失效
                // status = jedis.expireAt("tt", unixTime);
                System.out.println("缓存的数据(没有重新设置过去时间):" + jedis.get("tt"));
            }
            // 3.释放资源
            jedis.close();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

输出:

----------------
过期时间设置结果:1
缓存的数据(设置过期过期):test1
缓存的数据(没有重新设置过去时间):test2
----------------
过期时间设置结果:1
缓存的数据(设置过期过期):test1
缓存的数据(没有重新设置过去时间):test2
----------------
过期时间设置结果:1
缓存的数据(设置过期过期):null
缓存的数据(没有重新设置过去时间):test2
----------------
过期时间设置结果:1
缓存的数据(设置过期过期):null

2. jedis.expireAt()方法时间戳的单位为秒

            // 1. 设置客户端IP地址和端口
            Jedis jedis = new Jedis("127.0.0.1", 6379);
            // 设置时间戳(单位为秒)
            jedis.expireAt("key", 200L);
            // 设置过期倒计时(单位为毫秒)
            jedis.expire("key", 1000 * 5);
            // 3.释放资源
            jedis.close();

 

阅读(671) 评论(0)