Redis小总结

Redis: 高性能-非关系型数据库

(一)基础
1.数据结构 - 键值对
    基本类型:String List HashMap Set ZSet
    高级类型:BitMap Stream 布隆过滤器...

小总结:
    读写速度非常快(数据存储在内存中,读10w/s 写8w/s,目前已知的最快k-v数据库)
    分布式锁
    支持事务、持久化、多种集群、LUA脚本、LRU驱动事件

优点:
    1.读写性能优异
    2.数据结构丰富
    3.支持持久化
    4.支持事务
    5.支持主从复制

缺点:
    1.容量受物理内存的限制
    2.不具备自动容错和恢复功能
    3.主机宕机,从机未同步数据,切换IP后引入数据不一致的问题,降低了系统的可用性
    4.较难支持在线扩容

(二)提升
1.为什么要用缓存?为什么要用Redis
现状:读多写少,从磁盘数据库读取相对慢
缓存/Redis 将数据放在内存中,服务直接读取内存中的数据,速度明显快,高性能。
并且在高并发情况下极大的减少数据库的压力
【关键字】 内存 - 高性能,高并发

2.使用缓存的考虑:常用(命中率高)/主要数据/数据不宜过大

3.使用缓存会出现什么问题
    3.1 缓存雪崩问题(数据失效/Redis挂掉)
        3.1.1 事发前:实现Redis的高可用,避免挂
        3.1.2 事发中:设置本地缓存+限流
        3.1.3 事发后:Redis持久化,重启后自动加载恢复缓存数据
    3.2 缓存穿透问题(大量不命中缓存而走数据库)
        3.2.1 使用布隆过滤器提前拦截
        3.2.2 将不存在的数据存在缓存中,设置较短过期时间
    3.3 缓存和数据库双写一致性问题(更新不同步)
        3.3.1 利用消息队列实现消息最终一致性的保证,加重试和宕机提醒机制

4. Redis为什么这么快
    4.1 纯内存操作
    4.2 单线程,无锁竞争
    4.3 多路 I/O复用模型,非阻塞
    4.4 高效的数据结构,加上底层做了大量优化

(三)数据结构:内部使用RedisObject表示所有对象,不同的数据类型对应不同的编码方式
    
    1. String
        SDS 相比于 C 的优化:记录字符长度,自动扩展空间,二进制保存(不过滤和限制)
    
    ******************** 难啃部分,待续 ******************** 

(四)持久化:防止突然宕机
    1.持久化过程:
        1.1 客户端向数据库发送写命令 - 数据在客户端内存中
        1.2 数据库接收客户端的写请求 - 数据在服务器内存
        1.3 数据库调用系统API将数据写入磁盘 - 数据在内核缓冲区
        1.4 操作系统将写缓存区传输到磁盘控制器 - 数据在磁盘缓存中
        1.5 操作系统的磁盘控制器将数据写入实际的物理媒介 - 磁盘
    
    生产环境一般一秒强制fsync 一次,Linux默认30s

    2.持久化方式
        方式一: RDB快照
        方式二:AOF
        方式三:混合
    ******************** 待深入了解 ******************** 
    
(五)集群 (主从复制)
    主节点写,从节点读
    实际上是一种数据冗余方式,可用于故障恢复,从节点可以负载均衡,具备高可用性
    
    哨兵模式:不保存任何数据,监控主从节点运作状态,主节点发生故障可从从节点选举出主节点

    新节点选举机制:两轮淘汰制
        1.标为主观下线、已断线、最后一次回复PING命令时长>5s -->淘汰
        2.与失效主节点连接断开时间超过down-after选项指定时间的十倍 -->淘汰
        3.复制偏移量最大 > 最小运行ID

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值