目录

  • 一、总结
  • redis基础功能
  • redis 中的算法
  • redis缓存高热数据的机制
  • 二、优化
  • 1. 单例服务器,服务器本身优化
  • 2. 单例服务器应用服务本身优化
  • 3. 集群优化
  • 4. 架构优化
  • 5. 根据数据流向进行优化


一、总结

redis基础功能

  • redis可以做为mysql 的前置缓存数据库,redis 与mysql对接的方式,需要配置线程池,需要定义后端nysgl的位置(IP) + port 端口+对接的方式sock文件的位置,其他策略
  • 用于内存/缓存型快速存储(读取)
  • 实现的方式
    ①是默认将数据存储在内存/缓存中
    ②具有丰富的数据类型,string list hash set && order set等,
    ③重要数据持久化的功能,持久化的方式:AOF RDB
  • 单线程模式—》速度快的原因之一::
    Epoll + I/o复用(cluster中的slots哈希槽可以充当数据读、取的索引)

redis 中的算法

  • LRU :淘汰策略
    1)缓存中的数据进行随机淘汰
    2)缓存中被设置了过期时间的数据进行随机淘汰
    3)缓存中被设置了过期时间的数据,进行惰性删除(仅当访问到的数据过期了,才会删除)
    4)当数据持续存储过程中,内存将满,会在设置了过期时间的数据中,进行近期淘汰
  • 令牌桶+漏桶算法:限流
  • Raft:
    选举机制,用于选举新的主节点的算法

redis缓存高热数据的机制

—》指定提高缓存内数据的命中数,最直接的可以刷脚本,访问这些数据

二、优化

1. 单例服务器,服务器本身优化

硬件资源选择(系统五大资源)

  • 磁盘 固态盘 SCSI(硬件磁盘阵列)
  • 服务器内存条选择(本地服务器和云服务器)
  • CPU 核数选择
  • 网络网卡(本地服务器和云服务器),需要考虑负载压力下的网络流量 QPS

以上需要计算费用成本,还需要考虑到该服务器上的服务在运行时消耗的性能比例(需要预留给系统一部分资源)

服务本身环境的选择

  • 操作系统选择 Linux 发行版:centos ubantu redhat server debian alphon mac SUSE(PS:虚拟化 KVM XEN FUFE)
  • 基于操作系统,依赖环境。选择最小化安装还是指定操作系统版本的安装 + 指定内核版本。软件是否有依赖(例如:tomcat 需要 JDK,编译需要 gcc gcc-c++ pcre …)
  • 软件资源优化 五大负载+内核优化(TCP协议相关、队列相关、路由转发、重定向、端口、文件打开数、系统的软硬限制等)

2. 单例服务器应用服务本身优化

以 redis 为例

首先从启动读取的恢复文件来看,基于AOF需要开启 AOF功能(RDB 默认)

  • RDB 中 save M N 触发周期的选择判定,这会影响到磁盘资源的使用
  • AOF 中选择合适的 syncwrite 同步写入磁盘的策略 everysecond

使用过程中,需要考虑到的是内存的使用量( OOM )

  • 内存淘汰策略:惰性淘汰+定期删除,禁止淘汰+定期删除。根据情况选择合适的淘汰策略(配置文件中定义)。

持久化方向
持久化的功能在保证数据完整性的同时,依然会持续性的对磁盘产生存储压力(压力来源于 AOF 和 RDB 生成的数据文件,AOF 和 RDB 的日志文件)。

  • 数据/日志文件的定期归档
  • 日志文件的分割(保存在日志中心)
  • 共享存储 NFS GFS fastDFS

redis主进程

  • 可以使用两个 redis 主进程配合实现备份冗余,提高抗高并发的能力

3. 集群优化

待续

4. 架构优化

待续

5. 根据数据流向进行优化

待续