1、redis中可以使用expire命令设置一个键的生存时间,到时间后redis会自动删除它
expire 设置生存时间(单位/秒)
pexpire 设置生存时间单位/毫秒)
ttl/pttl 查看键的剩余生存时间
persist 取消生存时间
expireat [key] unix时间戳1351858600
pexpireat [key] unix时间戳毫秒)1351858700000
2、应用场景
限时的优惠活动
网站数据缓存(对于一些需要定时更新的数据)
限制网站访客访问频率(例如:1分钟最多访问10次)
package cn.crxy.redis; import static org.junit.Assert.*; import java.util.List; import org.apache.commons.pool2.impl.GenericObjectPoolConfig; import org.junit.Test; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; import redis.clients.jedis.Transaction; public class RedisTest { String ip = "192.168.1.170"; int port = 6379; Jedis jedis = new Jedisip, port); /** * 仅供测试使用,单机无连接池方式 * @throws Exception */ @Test public void test1) throws Exception { //获取到redis服务器的链接 jedis.set"crxy", "wwww"); String value = jedis.get"crxy"); System.out.printlnvalue); } /** * 单机连接池方式 * @throws Exception */ @Test public void test2) throws Exception { JedisPoolConfig jedisPoolConfig = new JedisPoolConfig); //指定连接池中最大空闲连接数 jedisPoolConfig.setMaxIdle10); //链接池中创建的最大连接数 jedisPoolConfig.setMaxTotal100); //设置创建链接的超时时间 jedisPoolConfig.setMaxWaitMillis2000); //表示连接池在创建链接的时候会先测试一下链接是否可用,这样可以保证连接池中的链接都可用的。 jedisPoolConfig.setTestOnBorrowtrue); //创建一个jedis连接池 JedisPool jedisPool = new JedisPooljedisPoolConfig, ip, port); //从连接池中获取一个链接 Jedis jedis = jedisPool.getResource); String value = jedis.get"crxy"); System.out.printlnvalue); //把连接返回给连接池 jedisPool.returnResourcejedis); } /** * 限制网站访客的访问频率 * 一分钟之内最多访问10次 */ @Test public void test3) throws Exception { String ip = "192.168.1.110"; forint i=1;i<20;i++){ boolean flag = testLoginip); ifflag){ System.out.println"正常访问"+i); }else{ System.out.println"访问频繁,禁止访问"); } } } //根据用户的ip校验用户是否可以继续访问 private boolean testLoginString ip) { String value = jedis.getip); ifvalue==null){ jedis.incrip); //设置ip的生存时间 jedis.expireip, 60); }else{ int parseInt = Integer.parseIntvalue); ifparseInt>=10){ return false; } jedis.incrip); } return true; } }