赞
踩
一、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;
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。