1. Redis에서 만료 명령을 사용하여 키의 생존 시간을 설정할 수 있습니다. Redis는 시간이 만료된 후 자동으로 키를 삭제합니다. 생존 시간(단위/초)을 설정합니다. ).ttl /pttl 키의 남은 생존 시간 보기
persist 생존 시간 취소 만료 [key] unix timestamp 1351858600
pexpireat [key] unix timestamp (milliseconds) 1351858700000
2. 애플리케이션 시나리오
기간 한정 프로모션 웹사이트 데이터 캐싱(정기적으로 업데이트해야 하는 일부 데이터의 경우)
웹사이트 방문자 방문 빈도 제한(예: 1분에 최대 10회 방문) /**
* 限制网站访客访问频率(例如:1分钟最多访问10次),其中: 访客通过IP标识,即同一个IP在1分钟内仅能访问10次
*/
@Test
public void test4(){
final String ip = "127.0.0.1" ;
Jedis redis = null;
//模拟同一个用户连续访问20次
for(int i =0;i <20;i ++){
boolean t = validate(ip);
if(t ){
System. out.println("恭喜你,购票成功!" +i );
} else{
//获取当前ip过期时间
redis = getRedis();
break;
}
}
while(true &&redis.ttl(ip)>0){
System. out.println("抱歉,你访问过度频繁,请" +redis .ttl(ip )+"秒后再来访问!" );
try {
Thread. sleep(1000);
} catch (InterruptedException e ) {
e.printStackTrace();
}
}
System. out.println("你可以再次访问了" );
}
/**
*
* @param ip
* @return true: 可以访问,false: 表示已经达到最大上线
*/
public boolean validate( String ip ) {
Jedis jedis = getRedis();
String value = jedis.get( ip);
if(value ==null||value.length()==0){ //第一次访问
jedis.setex( ip, 60,String. valueOf(0));
} else{
int v = Integer.parseInt (value );
if(v >=10){
return false ;
}
}
jedis.incr( ip);
return true ;
}
/**
* @return
*/
public Jedis getRedis() {
jedisPool = getJedisPool();
Jedis jedis = jedisPool.getResource();
return jedis ;
}
/**
*
*/
public JedisPool getJedisPool() {
JedisPoolConfig poolConfig = new JedisPoolConfig();
// 控制一个pool最多有多少个 jedis实例。
poolConfig.setMaxTotal(1000);
// 控制一个pool最多有多少个状态为idle(空闲的)的 jedis实例。
poolConfig.setMaxIdle(10);
// 表示当borrow(引入)一个 jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException;
poolConfig.setMaxWaitMillis(200000);
// 在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的 jedis实例均是可用的;
poolConfig.setTestOnBorrow(true);
return new JedisPool(poolConfig, host, port);
}
위 내용은 Java에서 Redis 키의 생존 시간(만료)에 대한 자세한 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!