Redis 博文索引
2024-10-21 15:42:32
博文索引
Redis 简介
优点
多功能
提供了丰富的数据结构,可以满足很多实用场景,基本上能做到开箱即用
并且支持管道、事务、发布订阅、缓存过期、Lua脚本支持等高级功能高性能
数据内存数据库,读写无需访问外存
单线程设计,访问内存无需线程切换与同步易部署
支持持久化,方便数据恢复
主从复制,提高数据的安全性
配合 Redis Cluster 可以实现数据分片,突破单机容量限制
配合 Redis Sentinel 可以实现自动灾备,实现高可用
缺点
存储容量受限
作为一款内存数据库,内存始终是主要瓶颈
由于内存价格较磁盘更为昂贵,因此需要细心规划 redis 的使用CPU利用率
redis 的单线程设计,会导致多核 CPU 的资源利用率不高
需要同一台机器上部署多个实例来提高 CPU 使用率大规模应用有坑
运维架构不完整,缺少监控
不擅长应对高连接数 (>10K) 或大数据量 (>16G) 的场景
应用场景
缓存(效率至上)
单副本,关闭主从复制
关闭 AOF / BGSAVE,减少磁盘 I/O 对性能影响
节点宕机,直接切空实例(丢失部分数据)数据库(兼顾安全)
双副本,开启主从复制
主库关闭 AOF / BGSAVE
主挂切备,备挂换新备大规模应用(横向扩展)
搭建集群,分摊压力
读写分离,以一致性换取性能
最佳实践
- 合理设计 key-space,用 db 隔离不相关数据,为横向扩容预留空间
- 严禁设置低读超时 (<200ms) 和紧密重试,避免重连风暴
- 留意 key 分布,避免出现数据倾斜
- 避免保存超过 10k 的大 value
- 设置 ttl 时引入随机性,避免大量 key 同时过期
- 避免使用部分高级功能:Transaction, Pub/Sub, Blocking API,LUA Script
- 避免使用高危命令:keys、flushdb、flushall
- bitset 注意检查长度,避免引发 OOM
最新文章
- angular学习笔记(二十八)-$http(6)-使用ngResource模块构建RESTful架构
- 深入理解使用ListView时ArrayAdapter、SimpleAdapter、BaseAdapter的原理
- DBCP数据源连接池实现原理分析
- [转]	easyui 获取数据表格中选中行的数据 Get selected row data from...
- 浪潮之巅IT那点事之一——AT&;T的兴衰
- 【codevs1191】数轴染色 线段树 区间修改+固定区间查询
- Floyd最短路径算法
- 【HDOJ】4426 Palindromic Substring
- [Effective C++ --012]复制对象时勿忘其每一个成分
- 明解C语言,练习13-3,从文件中读入个人信息,按身高排序后显示
- 数学 ZJOI 2012 数列
- python安装zlib一直无效
- 集成框架 javaweb开发平台ssmy_m(生成代码) java struts2 mybatis spring maven jquery
- 3D人脸识别预处理,3D face recognition preprocess
- CSS学习中的瓶颈期深入分析
- 盘点CSS中可以和不可以继承的属性
- -bash: fork: Cannot allocate memory 问题的处理
- 使用 FFMPEG 命令为视频嵌入字幕
- vue 路由参数
- 二、认识Xcode(第一个工程:Hello world)
热门文章
- codevs 1344 模拟退火
- Mycat安装并实现mysql读写分离,分库分表
- Zookeeper+Kafka+Spark streaming单机整合开发
- Java并发包源码学习系列:阻塞队列实现之LinkedTransferQueue源码解析
- JDK-7新特性,更优雅的关闭流-java try-with-resource语句使用
- .net core Api 部署到Linux
- Maven三种打包方式jar war pom
- HDU 6900 Residual Polynomial【分治 NTT】
- Codeforces Round #655 (Div. 2) C. Omkar and Baseball
- 在eclipse完成对Java_web项目里面资源文件的读取