• redis 知识点


    Redis是一个key-value的数据库服务器,它将所的数据库都保存在服务器状态redisServer结构的db数组中。db数组中的每个项都是redisDb结构,一个db数组保存着服务器中所有的数据库,默认创建16个数据库,服务器在初始化时会根据dbnum的值创建对应数量的数据库。

    struct redisServer{
        ...
        int dbnum;
        redisDb *db;      
        ...  
    }
    typedef struct redisDb{
        ...
        dict *dict;
        dict *expires;
        ...
    }redisDb;
    

    Redis设置键的生存时间或过期时间

    • EXPlRE 命令用于将键key 的生存时间设置为ttl 秒;
    • PEXPIRE 命令用于将键key 的生存时间设置为ttl 毫秒;
    • EXPIREAT < timestamp> 命令用于将键key 的过期时间设置为timestamp所指定的秒数时间戳;
    • PEXPIREAT < timestamp > 命令用于将键key 的过期时间设置为timestamp所指定的毫秒数时间戳。
      ** SETEX命令可以在设置一个字符串key时,同时设置该key的过期时间(只能用于字符串键).
      ** TTL 命令和PTTL 命令接受一个带有生存时间或者过期时间的键,返回这个键的剩余生存时间.
    > time
    1) "1545470973"
    2) "878082"
    > expireat key1 1545471973
    (integer) 1
    > ttl key1
    (integer) 962
    

    key删除策略

    • 定期删除:Redis每隔一段时间就会去查看Redis设置了过期时间的key,会在100ms的间隔中默认查看3个key。
    • 惰性删除:如果当你去查询一个已经过了生存时间的key时,Redis会先查看当前key的生存时间,是否已经到了,直接删除当前key,并且给用户返回一个空值。

    Redis的淘汰机制

    在Redis内存已经满时,添加一个新的数据,执行淘汰机制。

    • volatile-lru:在内存不足时,Redis会在设置过了生存时间的key中干掉一个最近最少使用的key。
    • volatile-lfu:在内存不足时,Redis会在设置过了生存时间的key中干掉一个最近最少频次使用的key。
    • volatile-ttl:在内存不足时,Redis会在设置过了生存时间的key中干掉一个剩余生存时间最少的key。
    • volatile-random:在内存不足时,Redis会在设置过了生存时间的key中随机干掉一个。
    • allkeys-lru:在内存不足时,Redis会在全部的key中干掉一个最近最少使用的key。
    • allkeys-lfu:在内存不足时,Redis会在全部的key中干掉一个最近最少频次使用的key。
    • allkeys-random:在内存不足时,Redis会在全部的key中随机干掉一个。
    • noeviction:(默认)在内存不足时,直接报错。
      ** 指定淘汰机制的方式:maxmemory-policy具体策略,
      ** 设置Redis的最大内存:maxmemory 字节大小

    Redis的常见问题 https://www.pianshen.com/article/71901597089/

  • 相关阅读:
    25.Kafka(三):面试题
    24.Kafka(二):API
    23.Kafka(一):概述
    22.Flume监控、自定义组件、面试题
    21.Flume概述和企业开发案例
    20.Hive企业调优
    19.Hive函数、存储压缩
    18.Hive数据查询
    17.Hive数据操作
    16.Hive基础
  • 原文地址:https://www.cnblogs.com/bsszds930/p/13801246.html
Copyright © 2020-2023  润新知