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:

Java代码  

  1. package bj.zm.redis;
  2. import org.junit.Test;
  3. import redis.clients.jedis.Jedis;
  4. import redis.clients.jedis.Transaction;
  5. /**
  6. * 使用键的生存时间来实现控制用户访问网站的频率
  7. * @author Administrator
  8. *
  9. */
  10. public class TestWebSite {
  11. Jedis jedis = new Jedis("192.168.1.110", 6379);
  12. @Test
  13. public void test(){
  14. String ip = "192.168.1.1";// 客户IP
  15. website(ip);
  16. }
  17. //每次递增1,如果在60S内访问超过了3次 则 访问频率过高(防止抓取)  模拟的时候 连续执行多次junit来实现打印用户访问频率超限的效果
  18. private void website(String ip) {
  19. String value = jedis.get(ip);
  20. if(value==null){
  21. Transaction transaction = jedis.multi();
  22. transaction.incr(ip);
  23. transaction.expire(ip, 60);
  24. transaction.exec();
  25. }else{
  26. int intvalue = Integer.parseInt(value);
  27. if(intvalue<=3){
  28. jedis.incr(ip);
  29. }else{
  30. System.err.println("用户访问频率超限!");
  31. }
  32. }
  33. }
  34. }

原文地址:https://www.cnblogs.com/zhuyeshen/p/12080655.html

时间: 2024-10-10 00:17:39

redis 键值对 有效期设置的相关文章

redis 键值相关命令

键值相关命令 keys *   返回所有的键  keys my* exists mykey1 是否存在mykey1键 del mykey 删除mykey键 expire mykey 10 设置mykey键过期时间为10秒 ttl mykey 得到mykey的过期时间(不断变化),-1 表示已经过期,过期则被销毁掉 ,如果没设置过期时间,默认就是-1 redis 默认16个数据库,从0-15. 默认为0数据库 select 1 选择1 数据库 move age 1 将age移到1数据库 persi

Redis 键值数据类型及基本操作

到目前为止,Redis 支持的键值数据类型如下: 字符串(String) 哈希(Map) 列表(list) 集合(sets) 有序集合(sorted sets)   1. String 字符串类型 string是redis最基本的类型,一个key对应一个value. string类型是二进制安全的.意思是redis的string可以包含任何数据.比如jpg图片或者序列化的对象 . string类型是Redis最基本的数据类型,一个键最大能存储512MB. String 命令: 赋值与取值 set

Redis键值数据类型之字符串

字符串类型 1. 获得当前key="bar"对应value的类型 type bar 2. 字符串类型可以存储任何形式的字符串, 当存储的字符串是整数形式时, Redis提供了一个命令"incr", 让当前键值递增,并返回递增后的值 127.0.0.1:6379> incr num (integer) 1 127.0.0.1:6379> incr num (integer) 2 127.0.0.1:6379> get num "2"

Redis键值过期自动执行回调函数

用到了 redis 的键空间通知(keyspace notifications) 今天帮忙解决问题时遇到的redis一个功能点 具体行为就是:某个键值到了过期时间自动触发回调函数,然后执行一些操作,比如订单15分钟未支付就自动取消. 系统环境Win10, PHP7.1 下面记录下刚才爬的坑: 1.redis 2.8版本的升级到 3.0 以上再说,比如 3.2 2.如果将redis加入到windows的系统服务了,建议在初始阶段停止服务,使用redis-server "配置文件路径" 来

Redis键值相关命令

1. keys 格式:keys {pattern} 返回满足给定pattern的所有key. 2. exists 格式:exists 'key' 判断key是否存在. 3. del 格式:del 'key' 删除key. 4. expire 格式:expire 'key' {num} 对键设置过期时间,键必须存在,num为秒. 5. persist 格式:persist 'key' 取消键的过期时间,键必须存在. 6. ttl 格式:ttl 'key' 获得key剩余时长. 7. select

spring中订阅redis键值过期消息通知

1.首先启用redis通知功能(ubuntu下操作):编辑/etc/redis/redis.conf文件,添加或启用以下内容(过期通知): notify-keyspace-events Ex 或者登陆redis-cli之后,输入以下命令: config set notify-keyspace-events Ex 更多通知详见:http://redis.io/topics/notifications#configuration 2.Java Spring中配置监听 接口类: import java

【LAMP整合Redis键值缓存为库分担压力】

LAMP+ redis 架构图: 安装phpredis扩展 Php主配置文件引入redis库文件 Redis扩展 // 对httpd php扩展连接指定redis服务器 原文地址:https://www.cnblogs.com/activecode/p/9988372.html

7.Redis键值对数据库

1.Redis的安装以及客户端连接 安装:apt-get install redis-server 卸载:apt-get purge --auto-remove redis-server 启动:redis安装之后默认会自动启动,但是也可以手动启动,service redis-server start 停止:service redis-server stop 客户端连接,一种方式是使用python等语言去连接,还可以使用redis-cli 2.Redis的字符串以及过期时间 3.Redis的列表操

Redis学习第七课:键值命令和服务器命令

Redis键值相关命令                                                                                                                                   keys:返回满足给定pattern的所有key.(用法:keys pattern表达式) exists:确认一个key是否存在.(用法:exists key) del:删除一个key.(用法:del key) ex