redis中键的生存时间(expire)
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 Jedis(ip, port);
/**
* 仅供测试使用,单机无连接池方式
* @throws Exception
*/
@Test
public void test1() throws Exception {
//获取到redis服务器的链接
jedis.set("crxy", "wwww");
String value = jedis.get("crxy");
System.out.println(value);
} /**
* 单机连接池方式
* @throws Exception
*/
@Test
public void test2() throws Exception { JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
//指定连接池中最大空闲连接数
jedisPoolConfig.setMaxIdle(10);
//链接池中创建的最大连接数
jedisPoolConfig.setMaxTotal(100);
//设置创建链接的超时时间
jedisPoolConfig.setMaxWaitMillis(2000);
//表示连接池在创建链接的时候会先测试一下链接是否可用,这样可以保证连接池中的链接都可用的。
jedisPoolConfig.setTestOnBorrow(true); //创建一个jedis连接池
JedisPool jedisPool = new JedisPool(jedisPoolConfig, ip, port);
//从连接池中获取一个链接
Jedis jedis = jedisPool.getResource();
String value = jedis.get("crxy");
System.out.println(value); //把连接返回给连接池
jedisPool.returnResource(jedis);
} /**
* 限制网站访客的访问频率
* 一分钟之内最多访问10次
*/
@Test
public void test3() throws Exception {
String ip = "192.168.1.110";
for(int i=1;i<20;i++){
boolean flag = testLogin(ip);
if(flag){
System.out.println("正常访问"+i);
}else{
System.out.println("访问频繁,禁止访问");
}
} } //根据用户的ip校验用户是否可以继续访问
private boolean testLogin(String ip) {
String value = jedis.get(ip);
if(value==null){
jedis.incr(ip);
//设置ip的生存时间
jedis.expire(ip, 60);
}else{
int parseInt = Integer.parseInt(value);
if(parseInt>=10){
return false;
}
jedis.incr(ip);
}
return true;
} }
redis中键的生存时间(expire)的更多相关文章
- 【redis中键的生存时间(expire) 】
1.redis中可以使用expire命令设置一个键的生存时间,到时间后redis会自动删除它 expire 设置生存时间(单位/秒) pexpire 设置生存时间( ...
- redis中键空间通知
通过redis的键空间通知,当redis删除过期key的时候,及时更新mongodb数据库中user的状态 var Redis = require('ioredis'); var redis = ne ...
- redis设置键值生存时间
EXPIRE <KEY> <TTL> : 将键的生存时间设为 ttl 秒PEXPIRE <KEY> <TTL> :将键的生存时间设为 ttl 毫秒EXP ...
- redis中键值对中值的各种类型
1 value的最基本的数据类型是String 2 如果value是一张图片 先对图片进行base64编码成一个字符串,然后再保存到redis中,用的时候进行base64解码即可. 这是base64的 ...
- redis中的key设置过期时间
EXPIRE key seconds 为给定 key 设置生存时间,当 key 过期时(生存时间为 0 ),它会被自动删除. 在 Redis 中,带有生存时间的 key 被称为『易失的 ...
- Redis 中的原子操作(3)-使用Redis实现分布式锁
Redis 中的分布式锁如何使用 分布式锁的使用场景 使用 Redis 来实现分布式锁 使用 set key value px milliseconds nx 实现 SETNX+Lua 实现 使用 R ...
- 快速同步mysql数据到redis中
MYSQL快速同步数据到Redis 举例场景:存储游戏玩家的任务数据,游戏服务器启动时将mysql中玩家的数据同步到redis中. 从MySQL中将数据导入到Redis的Hash结构中.当然,最直接的 ...
- 【Redis 向Redis中批量导入mysql中的数据(亲自测试)】
转自:https://blog.csdn.net/kenianni/article/details/84910638 有改动,仅供个人学习 问题提出:缓存的冷启动问题 应用系统新版本上线,这时候 re ...
- redis中关于过期键的删除策略
我们已经了解到了Redis是一种内存数据库,Redis中数据都是以key-value的形式存储在内存中.由Redisserver来维护和管理这部分内存,内存是何足珍贵,不须要的数据或者是已经使用过的无 ...
随机推荐
- vue学习笔记 模板语法(三)
<div id="kk"> <div>直接输出文本:{{msg}}</div> <div>自定义过滤器输出文本:{{msg|capi ...
- benchmark 库
性能测试的库 https://github.com/bestiejs/benchmark.js
- 腾讯云报告——MySQL成勒索新目标,数据服务基线安全问题迫在眉睫
推荐理由 大数据时代,人类产生的数据越来越多,但数据越多的情况下,也会带来数据的安全性问题,如MySQL数据库上的数据,越来越多的黑客盯上了它,今天推荐的这篇文章来自于腾讯云技术社区,主要是针对MyS ...
- 【C语言】浅谈可变参数与printf函数
一.何谓可变参数 int printf( const char* format, ...); 这是使用过C语言的人所再熟悉不过的printf函数原型,它的参数中就有固定参数format和可变参数(用& ...
- AtCoder Beginner Contest 055题解
A.当a=1就把a改成14,b=1就把b改成14,然后比较a,b大小即可. #include <iostream> #include <algorithm> #include ...
- 【转】JS判断SWF,JPG加载完毕、兼容(Activex,plugIn)所有浏览器
JS判断SWF,JPG加载完毕.兼容(Activex,plugIn)所有浏览器 这里主要说下监听SWF的加载. 网上流传已久的监听方法,只能在IE(Activex插件下)下实现.在使用plugin的浏 ...
- poptest老李谈数据库优化总结
poptest老李谈数据库优化总结 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:9088 ...
- (转)Java ConcurrentModificationException异常原因和解决方法
转载自:http://www.cnblogs.com/dolphin0520/p/3933551.html 在前面一篇文章中提到,对Vector.ArrayList在迭代的时候如果同时对其进行修改就会 ...
- hdu 3032 Nim or not Nim? (sg函数打表找规律)
题意:有N堆石子,每堆有s[i]个,Alice和Bob两人轮流取石子,可以从一堆中取任意多的石子,也可以把一堆石子分成两小堆 Alice先取,问谁能获胜 思路:首先观察这道题的数据范围 1 ≤ N ...
- Statistical Models and Social Science
1.1 Statistical Models and Social Reality KEY: complex society v.s statistical models relationship,d ...