Redis 博文索引

博文索引

Redis 简介

优势

  • 多功能html

    提供了丰富的数据结构,能够知足不少实用场景,基本上能作到开箱即用
    而且支持管道、事务、发布订阅、缓存过时、Lua脚本支持等高级功能redis

  • 高性能数据库

    数据内存数据库,读写无需访问外存
    单线程设计,访问内存无需线程切换与同步缓存

  • 易部署安全

    支持持久化,方便数据恢复
    主从复制,提升数据的安全性
    配合 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
相关文章
相关标签/搜索