目录
- 一、总结
- 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. 根据数据流向进行优化
待续