添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

memcache有效期默认30天

后面查了资料发现memcache我们使用的set方式有效时间是有限制的,2592000秒(30天),多一秒都不行。超过这个时间都无法get到任何东西。

如何处理超过30天的场景

1.memcache其实是支持的

可以使用memcache里面的add来进行设置有效时间。

$mem->add($key,$value,0,time()+60*24*3600)

原理是:基于当前时间戳往后追加时间

2.改用redis进行时间的设置

1,定时删除

什么是定时删除?顾名思义,就是我定个时间,到点就删除,有什么好处呢,对内存是最友好的,可以保证过期键会被尽快的删除掉,内存被尽早的释放出来,但是硬币都有两面啊,内存友好了,CUP时间呢,到点就删除到点就删除,CUP不干别的事了,光做删除过期键操作了,不现实,并且服务器还要创建大量的定时器,来实现定时删除,如果内存现在并不缺少,有空闲的内存,而这个时候有大量的命令请求在等待服务器处理,那么服务器也应该优先把CUP时间给处理客户端请求上,而不是删除过期键上。

所以定时删除不是一个完美的策略。

2,懒惰删除

同样,什么是懒惰删除,懒惰,懒得做删除操作,逼不得已我是不会去删除过期键的,懒到家了。

那么什么时候是逼不得已的时候呢,客户端现在取这个数据了,这个key已经过期了,明显不能返回给客户端,这个时候也就是懒到家的时候了,不删不行啊,客户端那边不愿意啊,可以看出,这个策略对内存是极不好的,没有建设节约型社会,但是CUP时间是最友好的,不会轻易动用CUP时间去删除过期键。

3,定期删除

定期?比定时时间长一点,不会时刻的去检查过期键,删除过期键,定期删除,是每隔一段时间检查一次数据库,删除里面的过期键,很明显定期删除是定时删除和懒惰删除的一个折中。

那么Redis中采用什么过期删除策略呢?

Redis时间上采用了惰性删除和定期删除两种策略配合使用,可以更好的使CUP时间和内存区的平衡

本文讨论Redis的过期键删除策略就不能不提AOF和RDB两种备份策略对过期键的处理

首先说一下RDB

我们知道服务器启动的时候如果开启了RDB功能,服务器会对RDB文件进行载入

这里分两种情况

1,主服务器模式,会被文件中的键进行检查,过期的键忽略,所以过期键对主服务器不会造成影响,

2,从服务器模式,无论过期不过期全部载入数据库中,不过主服务器在进行数据同步的时候,从服务器的数据会被清空,所以一般来说,对从服务器来说也不会造成影响

然后是AOF

记住一点,在执行AOF重写的时候,过期键不会被保存到重写后的AOF文件中,所以过期键不会对AOF造成影响。

还有就是主从复制的时候

主删除一个过期键,会显示的告诉从

从在执行客户端发送的读命令时,即使是过期键也不会删除过期键,而是像处理未过期键一样处理,从只有介绍到主的Del命令才会删除。

如果你清楚知道这一点,那就跳过吧!如果你不太清楚原因,那就往下看吧  我们都在用MemCached,缓存有其过期时间,我们经常在配置中设置,如果有业务场景需要动态设置过期时间的时候,就可以通过接口直接... 来自: sunqi memcache的失效时间设置比如memcache.set(key,value,50)设置为50秒过期memcache.set(key,value,newDate(System.currentTime... 来自: yecong111的专栏 今天想看看memcache,发现memcacheclient的set()方法的过期时间总是设置不正确,,发现这个时间是这样设置的set(,key,value,newjava.util.Date(lon... 来自: lilovfly的专栏 问题:java操作memcache缓存设置完成之后,服务器中失效的时间总是小于正常应该失效的时间解决方案:1.查看linux系统时间是否准确         2.查看memcache服务 使用stat... 来自: daizor的博客 memcached版本:memcached-1.4.24 libevent版本:libevent-2.0.21-stable 客户端jar包:java_memcached-release_2.6.6. set、add方法的最后一个参数(默认值为0,表示永不过期),可以有两种写法:时间段(秒数)   时间段的写法,允许的最大值为30天,即3600*24*30。时间点(时间戳) time()+3600*... 来自: 彳亍 //set(key,value,Date) ,Date是一个过期时间,如果想让这个过期时间生效的话,这里传递的new Date(long date) 中参数date,需要是个大于或等于1000的值。 ... 来自: mym43210的专栏 rel_time_trealtime(time_texptime){/*no.ofsecondsin30days-largestpossibledeltaexptime*/ if(exptime==0... 来自: 发现-成长 内存碎片;memcache内存管理;memcache中设置chunk大小;chunk增长因子调优;memcached的过期数据惰性删除等;memcache中的lru删除机制... 来自: hsd2012的专栏 做实验为什么呢?Memcached的过期删除机制1.当某个值过期后,并没有内存删除,因此stats统计时curr_item有其信息。2.当取值时,判断是否过期,如果过期,返回空,并且清空,curr_i... 来自: wuming19900801的专栏 缓存雪崩现象一般是由于某个节点失效,导致其它节点的缓存命中率下降,缓存中缺失的数据直接去数据库查询,短时间内造成数据库服务器崩溃。或者是由于缓存周期性失效,比如设置每隔6个小时失效一次,那么每6个小时... 来自: 杨森源的博客 超过有效期  具体是通过“懒惰”机制删除该过期数据,与过期session的删除类似。过期session删除机制:session是以文件形式保存的硬盘中,如果有的session文件已经过期了,则该ses... 来自: 大道至简 知易行难 如果没有设置有效期,即使内存用完,redis自动回收机制也是看设置了有效期的,不会动没有设定有效期的,如果清理后内存还是满的,就不再接受写操作。Redis无论有没有设置expire,他都会遵循redi... 来自: soulmate_P的博客 一.核心优化概述什么是优化:以更小的资源支持更大负载网站的运行,以小博大。思路:尽量减少用户等待时间,节省系统资源开销,节省带宽使用。优化什么地方?有三方面:Memcache内存缓存技术、静态化技术、... 来自: 给我一杯奶茶的博客 本文对redis的过期处理机制做个简单的概述,让大家有个基本的认识。Redis中有个设置时间过期的功能,即对存储在redis数据库中的值可以设置一个过期时间。作为一个缓存数据库,这是非常实用的。如我们... 来自: 坤哥的博客 一、有效时间设置:redis对存储值的过期处理实际上是针对该值的键(key)处理的,即时间的设置也是设置key的有效时间。Expires字典保存了所有键的过期时间,Expires也被称为过期字段。 四... 来自: zsg88的专栏 题目:实现一个容器,提供两个方法,add和size写两个线程,线程1添加10个元素到容器中,线程2实现监控元素的个数,当个数为5的时候,线程2给出提示并结束。思路1、写一个容器类,写一个List集合用... 来自: ShoppingChen的博客 文章来自:http://baijiahao.baidu.com/s?id=1587071920793323121&wfr=spider&for=pc聪明的你,用gola... 来自: hyl999的专栏 csscss样式这一块坑比较多,有些情况不按常理出牌,在精确控制样式和大小时就会遇到这些坑。1、行内元素(比如img)默认会在末尾(或底部)留白/间隙,无法去除。解决办法:通过display:bloc... 来自: linysuccess的专栏 memcached过期策略:1、memcached的过期时间,有一个最大时限就是30天,若超过30天,存储时返回true,但是在取数据的时候取不到(这个key是1秒后过期的)。2、memcached的... 来自: 偶木 1、过期时间限制memcached的过期时间并不能随便设置,有一个最大时限就是30天,若超过30天后,存储时返回true,但是在取数据的时候取不到。(在取数据的时候才去做验证,看看数据是否失效)说到这... 来自: ln865709215的博客 最近项目中使用到了Memcached,而客户端选择了XMemcached,在设置过期时间时,因对Memcached不熟悉,将expire设置为1000000000,本意表示尽量长的时间不要过期,但在测... 来自: shixing_11的专栏 今天遇到mc的一个问题 我在设置某个值 把有效期设成 31天 结果读不出结果,但是明明写是成功的检查了 代码半天 也以为是 缓存配置的问题 测试了半个来小时发现均没有问题后面 尝试了是不是 key 的... 来自: 过客阵营 -- 简单的就要最简单 memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。很多大型网站都使用了... 来自: 倾城一笑stu 众所周知,Memcached使用的是LRU(LeastRecentlyUsed最近最少使用)算法来回收缓存,将那些属于LRU的数据移出内存,从而腾出空间来加载另外的数据。那么Memcached的最近最... 来自: qianshanding0708的博客 转载请注明出处哈:http://carlosfu.iteye.com/blog/2254154    一、现象:  redis-cluster某个分片内存飙升,明显比其他分片高很多,而且持续增长。并且... 来自: 欧辰的专栏 半路出家菜码农,裸辞找工迷茫中;面试碰壁知不足,归家勤学记此中。前段时间看完了csdn上的redis入门相关视频,现在来学在java项目中操作redis的API,Jedis。文中代码是模仿网上各大侠的... 来自: lcwben的博客 考虑一下代码输出结果:$arr=array(555);var_dump(in_array('555a',$arr));按照常理理解,应该打印false可实际的返回结果却是bool(true)原因:ph... 来自: 我是程序猿的专栏 要开发还得选好IDE,我推荐使用 VisualStudioCode,下面看看怎么调试。试着调试node.js的代码还是上篇那段 consthttp=require('http');consthostn... 来自: lee576的专栏 web开发之中不论是前端还是后端都遇到了不少坑,在这记录下。前端踩坑:1.inline-block总会有间隙在前端布局的时候经常会有对齐的需要,inline可以用来对齐行级元素,而如果要对齐块级元素就... 来自: qq_35513792的博客 菜鸟阶段,几乎天天在雷上度过。。。第一个:数据库表字段不能用sql字段,会报500错误。比如order在select时就会报错。第二个:在用int类型做查询操作Controller层要写Integer... 来自: 清风徐来~~ 我,依然在~ Integer缓存坑1.默认情况下Integer.valueOf(inti)方法,假如i的值在[-128,127]的区间内,则返回值由IntegerCache.cache产生,相同的参数值会返回同一个... 来自: MisterPan 这两天在做项目的过程中遇到了一个访问全局变量的问题场景:编写一个方法,获取id对应的token值,token需要缓存起来(全局变量内存缓存),如果获取不到或者token的时间过期,那么发送http请求... 来自: 懂幸福,爱生活 memcached是作为一个cache服务器而设计的。内存失效判断是:当前时间>=对象更新时间+失效时间。memcache的缓存有效对象实现包括:(1)有效时间计算(2)回收对象策略... 来自: 陈嘉怡的专栏 memcache的过期数据删除机制      1.stats命令可以查看memcache的当前状态,一共存过多少记录  total_item,以及当前有效的记录curr_items,当有些记录失效的时... 来自: liang135238的专栏 转载请注明出处:http://blog.csdn.net/qq_26525215本文源自【大学之旅_谙忆的博客】如果我们使用Java操作Redis,需要确保已经安装了redis服务及Javaredis... 来自: 谙忆-陈浩翔 通过前一篇《redis的简单使用》的简单介绍,本篇主要阐述Jedis对redis的五大类型的操作:字符串、列表、散列、集合、有序集合。JedisUtil这里的测试用例采用junit4进行运行,准备代码... 来自: 朱小厮的博客 问题描述假如你是一名老师,班上有45名同学,想要给他们进行一次测验,但又怕学生作弊,所以就想随机生成45份试卷,试卷题目都一样,只是随机打乱试题和答案顺序。思路:1.将所有题目和答案存入一个字典2.创... 来自: jling的专栏 Win10磁盘占用100%(卡顿)的解决方案本文提供一种Win10系统磁盘占用100%(卡顿)问题的解决方案(亲测可行)参考配置电脑:ThinkpadT460p(机械硬盘)系统:Win10家庭中文版(... 来自: Yudi_Sun的博客 今天本来想和大家说一下spring中bean的创建过程和生命周期的,可是因为项目重构过程中遇到好多的问题,卡来卡去,所以想和大家分享一下今天遇到的坑,希望大家可以少踩坑。项目场景:因为maven项目启... 来自: 林老师带你学编程 我们知道,Android系统基于Linux实现。针对传统Linux系统,NSA开发了一套安全机制SELinux,用来加强安全性。然而,由于Android系统有着独特的用户空间运行时,因此SELinux... 来自: 老罗的Android之旅 本文主要介绍Java里常用的子类和父类的变量实例化顺序及陷阱,并结合一个Android实例来探讨此问题。日后编程中应尽量避免此陷阱。首先看下面一段代码:定义一个虚类Server.javapackage... 来自: yanzi1225627的专栏 Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且... 来自: 鹏霄万里展雄飞 人生没有对错,只有选择后的坚持,不后悔,走下去,就是对的。 React Native 项目目录解析 上一节我们简单的新建了一个React Native的项目AwsoneProject,我们什么都没有... 来自: 北漂周的专栏(微信:stchou_zst) mode() :常见的有:"logical","integer","double","complex","raw","character","list","expression","name","fu... 来自: AquaVII的博客 多重继承指的是一个类可以同时从多于一个的父类那里继承行为和特征,然而我们知道Java为了保证数据安全,它只允许单继承。但有时候,我们确实是需要实现多重继承。可幸的是,Java 提供了两种方式让我们曲折... 来自: Rico's Blogs 1. 前言 隐马尔科夫HMM模型是一类重要的机器学习方法,其主要用于序列数据的分析,广泛应用于语音识别、文本翻译、序列预测、中文分词等多个领域。虽然近年来,由于RNN等深度学习方法的发展,HMM模型... 来自: tostq的专栏 Java中的ThreadLocal类允许我们创建只能被同一个线程读写的变量。因此,如果一段代码含有一个ThreadLocal变量的引用,即使两个线程同时执行这段代码,它们也无法访问到对方的Thread... 来自: u011860731的专栏 <script type="text/javascript">var markers = [];      $(document).ready(func... 来自: qq_34815528的博客 oracle 的Developer连接不上报错:listener does not currently know of SID given in connect descriptor 解决办法: 在 ... 来自: Vashon的专栏 本篇文章是根据我的上篇博客,给出的改进版,由于时间有限,仅做了一个简单的优化。相关文章:将excel导入数据库2018年4月1日,新增下载地址链接:点击打开源码下载地址十分抱歉,这个链接地址没有在这篇... 来自: Lynn_Blog 当需要生产一辆汽车时,我们需要为其装配发动机、轮胎、座椅等等部件,这个装配过程是比较复杂的而且也需要较高的组装技术。而建造者模式(Builder Pattern)就是为了将... 来自: 小小本科生成长之路 问题场景描述整个项目通过Maven构建,大致结构如下: 核心Spring框架一个module spring-boot-base service和dao一个module server-core 提供系统... 来自: 开发随笔 上一篇[极光推送Android客户端(一)],我们实现了极光推送在Android客户端推送功能。这篇文章我们进一步介绍下实现推送的效果(http://blog.csdn.net/u014733374/... 来自: IT_默 点间互信息(PMI)主要用于计算词语间的语义相似度,基本思想是统计两个词语在文本中同时出现的概率,如果概率越大,其相关性就越紧密,关联度越高。两个词语word1与word2的PMI值计算公式如下式所示... 来自: PURSUE ONE PIECE 利用CRC32绕过RAR密码(适合于小文本文件)原文标题:教你绕过rar密码 文章仅作rar密码破解的探讨,如有高见还望提出。   题目有点夸大其词,事实是我也没能想出一个更好的描述来总结这篇文... 来自: 林毅洋 1.Loom的原理Loom继承自MonoBehaviour,在Unity流程管理中Update方法下检查需要回调的Action进行加锁并回调,确保在主线程执行,回调序列本身又作为静态数据保存,在任意线... 来自: wlz1992614的专栏 一、组合模式适用场景把部分和整体的关系用树形结构来表示,从而使客户端可以使用统一的方式对部分对象和整体对象进行管理。二、组合模式结构 抽象构件(Conponent)角色:所有类的共有接口,定义了叶子和... 来自: 小小本科生成长之路