zoukankan      html  css  js  c++  java
  • Redis核心知识点

    Redis核心知识点

    一、两种持久化

    • RDB快照

    快照间隔内的数据会丢失;如果数据量很大,保存快照时间会比较长

    • AOF日志(Append Only File)

    同步选项:always(每个命令同步)、everysec(每秒同步一次)、no(系统决定)

    二、数据过期策略

    1.定时删除

    redis会把设置了过期时间的key放在单独的字典中,定时遍历来删除到期的key。

    • 每100ms从过期字典中随机挑选20个,把其中过期的key删除;
    • 如果过期的key占比超过1/4,重复上面步骤

    为了保证不会循环过度,导致卡顿,扫描时间上限默认不超过25ms。根据以上原理,系统中应避免大量的key同时过期,给要过期的key设置一个随机范围。

    2.惰性删除

    过期的key并不一定会马上删除,而是查询时,去判断是否过期,如果过期了才删除。

    三、数据淘汰策略

    可以设置内存最大使用量,当内存使用量超出时,会施行数据淘汰策略。

    Redis六种淘汰策略:

    volatile-lru:最近最少使用淘汰(有过期时间的数据集)

    volatile-ttl:将要过期的淘汰(有过期时间的数据集)

    volatile-random:随机淘汰(有过期时间的数据集)

    allkeys-lru:最近最少使用的淘汰(全部数据集)

    allkeys-random:随机淘汰(全部数据集)

    noeviction:禁止强制淘汰(全部数据集)

    Redis 4.0 引入了 LFU (访问频率最少)

    volatile-lfu :访问频率最少(有过期时间的数据集)

    allkeys-lfu:访问频率最少(全部数据集)

    LFU 策略通过统计访问频率

    四、事务

    事务中的多个命令被一次性发送给服务器,而不是一条一条发送,这种方式被称为流水线,它可以减少客户端与服务器之间的网络通信次数从而提升性能。

    Redis 最简单的事务实现方式是使用 MULTIEXEC 命令将事务操作包围起来。

    五、集群备份复制,高可用

    通过使用 slaveof <主host> 命令来让一个服务器成为另一个服务器的从服务器。

    连接过程

    先快照,后增量复制

    主从链

    解决从服务器太多。(主服务器可能无法很快地更新所有从服务器,或者重新连接和重新同步从服务器将导致系统超载。)增加中间层分担。

    哨兵(Sentinel)

    redis集群哨兵模式,保证集群高可用。Sentinel(哨兵)可以监听集群中的服务器,并在主服务器进入下线状态时,自动从从服务器中选举出新的主服务器。

  • 相关阅读:
    Java多线程(3) Volatile的实现原理
    Java 多线程(2)-Executor
    Java 多线程(1)-Thread和Runnable
    nginx+php部署
    MySQL的慢查询分析
    MySQL 错误
    log4j.properties配置详解
    Windows下Nginx的安装与配置(转)
    Java 字符的验证
    Spring MVC3返回JSON数据中文乱码问题解决(转)
  • 原文地址:https://www.cnblogs.com/aric2016/p/12201027.html
Copyright © 2011-2022 走看看