Redis键的生存时间(expire)

一、redis中可以使用expire命令设置一个键的生存时间,到时间后redis会自动删除它。

expire 设置生存时间(单位/秒)

pexpire设置生存时间(单位/毫秒)

ttl/pttl 查看键的剩余生存时间

persist 取消生存时间

expireat [key] unix时间戳1351858600

pexpireat [key] unix时间戳(毫秒)1351858700000

二、 应用场景:

限时的优惠活动

网站数据缓存(对于一些需要定时更新的数据)

限制网站访客访问频率(例如:1分钟最多访问10次)

三、限制网站访客访问频率

package com.chb.common.iface.database.redis;

 

 

import redis.clients.jedis.Jedis;

import redis.clients.jedis.JedisPool;

import redis.clients.jedis.JedisPoolConfig;

 

public class RedisUtil {

private final String host = "192.168.179.14";

private final int port = 6379;

public static void main(String[] args) {

RedisUtil redisUtil = new RedisUtil();

Jedis jedis = redisUtil.connect1();

for (int i = 0 ; i < 15; i++) {

boolean visited = redisUtil.checkLogin(jedis, "192.168.179.11");

System.out.println("是否允许访问:" + visited);

}

}

public boolean checkLogin(Jedis jedis, String key) {

String value = jedis.get(key);

if (value == null) {

jedis.set(key, "0");

jedis.expire(key, 60); // 设置生存周期60s

} else {

int count = Integer.parseInt(value);

if (count >= 10) {

System.out.println("当前访问频率过于频繁....");

return false;

}

}

jedis.incr(key); // 累加访问次数

return true;

}

public Jedis connect() {

Jedis jedis = new Jedis(host, port);

return jedis;

}

// 使用连接池

public Jedis connect1() {

JedisPoolConfig poolConfig = new JedisPoolConfig();

poolConfig.setMaxTotal(100);//总连接数

poolConfig.setMaxIdle(10);//空闲链接数

poolConfig.setMaxWaitMillis(3000);//创建连接的超时时间

poolConfig.setTestOnBorrow(true);//在创建连接的时候是否会测试

JedisPool jedisPool = new JedisPool(poolConfig, host, port);

// 通过连接池获取jedis 连接

Jedis jedis = jedisPool.getResource();

return jedis;

}

}

你可能感兴趣的:(redis,redis)