zoukankan      html  css  js  c++  java
  • redis生存时间

    redis生存时间

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wee616/article/details/53436304

    redis生存时间

    EXPIRE命令

    EXPIRE命令设置失效时间,单位秒。

    redis>set session:1 aaa
    OK
    redis>expire session:1 900
    (integer) 1
    • 1
    • 2
    • 3
    • 4

    TTL命令查看还有多长时间失效

    redis>SET foo bar
    OK
    redis>EXPIRE foo 20
    (integer) 1
    redis>TTL foo
    (integer) 15
    redis>TTL foo
    (integer) 7
    redis> TTL foo
    (integer) -1
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    可以用redis的失效时间实现访问频率控制。

    例如要限制每分钟每个用户最多只能访问100个页面,思路是对每个用户使用一个名为“rate.limiting:用户IP”的字符串类型键,每次用户访问则使用INCR命令递增该键的键值,如果递增后的值是1(第一次访问页面),则同时还要设置该键的生存时间为1分钟。这样每次用户访问页面时都读取该键的键值,如果超过了100就表明该用户的访问频率超过了限制,需要提示用户稍后访问。该键每分钟会自动被删除,所以下一分钟用户的访问次数又会重新计算,也就达到了限制访问频率的目的。

    redis key值自动清除

    当服务器内存有限时,如果大量地使用缓存键且生存时间设置得过长就会导致Redis占满内存;另一方面如果为了防止Redis占用内存过大而将缓存键的生存时间设得太短,就可能导致缓存命中率过低并且大量内存白白地闲置。 
    实际开发中会发现很难为缓存键设置合理的生存时间,为此可以限制Redis能够使用的最大内存,并让Redis按照一定的规则淘汰不需要的缓存键,这种方式在只将Redis用作缓存系统时非常实用。

    具体的设置方法为:修改配置文件的maxmemory参数,限制Redis最大可用内存大小(单位是字节),当超出了这个限制时Redis会依据maxmemory-policy参数指定的策略来删除不需要的键,直到Redis占用的内存小于指定内存。 
    maxmemory-policy支持的规则如图所示。其中的LRU(Least Recently Used)算法即“最近最少使用”,其认为最近最少使用的键在未来一段时间内也不会被用到,即当需要空间时这些键是可以被删除的。 
    Redis支持的淘汰键的规则

    事实上Redis并不会准确地将整个数据库中最久未被使用的键删除,而是每次从数据库中随机取3个键并删除这3个键中最久未被使用的键。删除生存时间最接近的键的实现方法也是这样。“3”这个数字可以通过Redis的配置文件中的maxmemory-samples参数设置。

  • 相关阅读:
    redis 资料
    php 安装redis php扩展
    Unity生命周期
    疫情下的大学生人格发展研究
    对联一句——百花深处
    Unity实现byte[]合成图像
    Unity实现精灵资源动态加载
    数据结构与算法初步
    Unity中激活子物体
    C#实现自定义列表
  • 原文地址:https://www.cnblogs.com/Darkqueen/p/9857522.html
Copyright © 2011-2022 走看看