`

redis 键值对 有效期设置

 
阅读更多

 

 

 

 


redis 键值对 有效期设置redis中可以使用expire命令设置一个键的生存时间,

到时间后redis会自动删除它<-----> 类比于javaweb系统临时数据 过期删除功能

 

expire 设置失效时间(单位/秒)
persist 取消失效时间

ttl/pttl(单位为 秒/毫秒) 查看键的剩余时间 

返回三种值 -2(健已经不存在了)  -1(表示永久有效)  大于0的数(还有多少有效时间)


pexpire设置失效时间(单位/毫秒)

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

 

应用:
限时的优惠活动: 活动对应数据限时为1小时 则设置为1小时后失效

网站数据缓存(对于一些需要定时更新的数据)
    比如排名,间隔10分钟做一次统计的话,那么排名的数据就可以设置 expire
 
网站访客访问频率限制(例如:1分钟最多访问10次):  用户ip作为健,默认值为1,incr命令,

 

set name zm

expire name 60 设置name失效时间为60S

ttl name  查看name健将要失效的剩余生存时间


persist name  取消name的失效时间
ttl name  如果返回是-1 则表示已经取消了name的失效时间  -1表示永久有效


 

 redis 设置IP单位时间内访问次数, 比如 1分钟内只能让客户IP访问量3次,否则封IP:

package bj.zm.redis;


import org.junit.Test;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.Transaction;
/**
 * 使用键的生存时间来实现控制用户访问网站的频率
 * @author Administrator
 *
 */
public class TestWebSite {
	Jedis jedis = new Jedis("192.168.1.110", 6379);
	@Test
	public void test(){
		String ip = "192.168.1.1";// 客户IP
		website(ip);
	}
	//每次递增1,如果在60S内访问超过了3次 则 访问频率过高(防止抓取)  模拟的时候 连续执行多次junit来实现打印用户访问频率超限的效果
	private void website(String ip) {
		String value = jedis.get(ip);
		if(value==null){
			Transaction transaction = jedis.multi();
			transaction.incr(ip);
			transaction.expire(ip, 60);
			transaction.exec();
		}else{
			int intvalue = Integer.parseInt(value);
			if(intvalue<=3){
				jedis.incr(ip);
			}else{
				System.err.println("用户访问频率超限!");
			}
		}
	}

}

 

 


 

分享到:
评论

相关推荐

    Springboot+Shiro+jwt+Redis+Mybatis 有效期内Token刷新方案.zip

    当JWT的有效期即将过期时,可以通过刷新令牌的方式延长其有效期,提高用户体验。 Redis是一个高性能的键值数据库,常用于缓存和会话管理。在这里,Redis用于存储和管理JWT刷新令牌,以便在JWT到期前快速刷新,而...

    springboot整和jwt、shiro、redis实现token自动刷新

    对于Redis的使用,我们需要配置一个TokenStore,将JWT令牌保存到Redis中,并设置相应的过期策略。当JWT即将过期时,可以监听Redis的事件,触发Token的刷新。同时,为了实现自动刷新,客户端也需要配合,当收到新的...

    redis的简单描述和问题

    * EXPIRE 命令:用于设置 Key 的有效期。 * TTL 命令:用于查看 Key 的有效期。 四、Redis 的 Java 客户端 * Jedis 客户端:是一个简单的 Redis 客户端,但线程不安全,需要创建连接池。 * Lettuce 客户端:是一个...

    Redis_Redis分布式缓存_

    4. **过期策略**: Redis提供了TTL(Time To Live)机制,允许为键设置有效期,超过有效期后自动删除,以避免缓存无限增长。 **Redis数据结构与缓存策略** 1. **数据结构**: Redis支持多种数据结构,如字符串、列表...

    java,redis,jedis操作工具类,自己写的简易 demo

    - **设置键值对**:`set(String key, String value)`,键值对的有效期可通过`expire(String key, int seconds)`设置。 - **获取键值对**:`get(String key)`。 - **删除键**:`del(String... keys)`,可以删除一...

    php 给 redis锁 续期

    首先,我们需要理解Redis的`SET`命令,它可以设置键值对,当配合`EX`(过期时间)和`NX`(如果不存在则设置)或`XX`(如果存在则设置)选项时,可以实现简单的分布式锁。例如: ```php $redis-&gt;set('lock_key', '...

    php和redis的使用

    - setex():设置键值的同时,设置键的有效期(生存时间)。 - ttl():获取键的剩余生存时间。 - persist():移除键的生存时间,使其成为永久键。 3. 高级操作: - mset():同时设置多个键值对。 - multi()、...

    redis学习笔记

    如`set key value`、`get key`、`setnx key value`(如果key不存在才设置)和`setex key seconds value`(设置key的有效期)。 2. **Hashes**:存储键值对的映射表,适合存储对象。如`hset key field value`、`hget ...

    Redis技术分析及运用

    在爱旅行项目中,认证模块(Auth)利用Redis来管理Token的有效期。这种做法主要是为了提高系统的安全性和响应速度。通过Redis存储Token及其过期时间,可以在用户请求认证信息时快速验证Token的有效性,避免了每次都...

    StackExchange.Redis缓存扩展

    它还支持缓存过期策略,通过`TimeSpan`参数指定键的有效期,确保数据的实时性。 **消息队列支持** 除了缓存,StackExchange.Redis还允许开发者利用Redis的消息队列功能。Redis支持两种主要的消息队列模式:发布/...

    SpringBoot项目 MybatisPlus使用 Redis缓存.zip

    8. **测试与优化**:完成以上配置后,编写测试用例验证缓存功能是否正常工作,并根据实际情况调整缓存策略,如缓存有效期、更新策略等。 通过这种方式,SpringBoot项目中的MybatisPlus可以充分利用Redis的缓存能力...

    基于Redis方式实现分布式锁

    * @param timeOut 锁的有效期(毫秒) */ public String lock(String lockKey, Long acquireTimeout, Long timeOut) { Jedis conn = null; String returnedLockId = null; try { // 建立Redis连接 conn = ...

    redis-shake最新版

    **Redis** 是一个开源的、基于内存的键值存储系统,常被用作数据库、缓存和消息代理。它支持多种数据结构,如字符串、哈希、列表、集合和有序集合,这使得Redis在处理各种数据场景时非常灵活。 ### Redis数据同步的...

    redis在php中使用

    ` 设置键key的值为'value',有效期1小时。 - `setnx()` 如果键不存在,则设置键值对,存在则不操作。 - `delete()` 用于删除一个或多个键,返回被删除键的数量。 - `ttl()` 返回键的剩余生存时间,如果键不存在或...

    redis+mysql使用学习

    首先,Redis是一款高性能的键值对内存数据库,其主要优势在于数据读写速度快,适用于处理大量短生命周期的数据。当与关系型数据库MySQL配合使用时,可以作为缓存层,存储热点数据,减少对MySQL的直接访问,降低...

    高性能NoSQL数据库Redis(盛大在线)

    - `TTL`:返回键的剩余生存时间,用于监控缓存的有效期。 - `DEL`:立即删除一个或多个键。 - `EXISTS`:检查给定键是否存在,用于判断数据的完整性。 综上所述,Redis以其强大的数据处理能力和广泛的API支持,成为...

    Python-rediscache一个Redis的缓存装饰器

    在上面的例子中,`compute_expensive_data`函数的结果将在第一次调用后被缓存,有效期为60秒。之后的调用会直接从Redis缓存中获取结果,除非缓存已过期。 5. **自定义缓存键** 默认情况下,装饰器使用函数名作为...

    基于redis的sso接口文档和教程

    1. **票据安全**:TGT和ST应该具有足够的复杂性和短暂的有效期,防止被恶意使用。 2. **加密传输**:所有与Redis的通信以及票据的传递应使用HTTPS,保证数据安全。 3. **会话超时**:设置合理的会话超时,避免用户长...

    redis实战 电子书

    - **setex**:设置键的值,并指定有效期。 - **setrange**:修改键所储存字符串值的一部分。 - **mset**:同时设置多个键的值。 - **msetnx**:同时设置多个键的值,当所有键都不存在时才设置成功。 - **get**:获取...

Global site tag (gtag.js) - Google Analytics