redis知识点

  • 什么是redis(remote dictionary server)
    开源、非阻塞I/O机制、运行于内存、nosql(非关系系)、键值对
  • 优点
    1.读写快(原因:运行于内存)(速度:10w/s)
    2.支持持久化(rdb [默认]、aof)
    3.多种数据机构(string、list、hash、有序set、无序set)
    4.多种特性(过期策略、淘汰机制、事务、pub/sub、计数)
    5.非阻塞I/O
  • 缺点
    1.容量受限于内存
    2.不具备容错和恢复功能(主节点宕机且未同步数据到从节点时,从节点代替新节点为主节点后未同步数据将丢失且不能恢复)
    redis不易在线扩容
  • 过期策略
    1.定期删除:定时器监测是否过期,过期则自动删除
    2.惰性删除:获取key时判断是否过期,如过期则删除
  • 淘汰机制(内存不足时写入)
    1.报错
    2.移除较为少用的key
    3.随机移除某个key
    4.在设计过期时间的key中随意移除
    5.在设计过期时间的key中移除最少使用的
    6.在设计过期时间的key中移除最先过期的
  • 引用场景
    1.计数器(incr、decr)
    2.缓存
    3.会话缓存(保存session)
    4.分布式锁(setnx)
    5.过滤器(sadd)
  • 持久化类型
    1.RDB(默认):是redis一种的缩写快照,通过快照周期将数据写入磁盘中且生成 .rdb文件。
    优点:是方便,一个文件实现持久化,且是利用子线程进心持久化,还原数据效率较高。
    缺点:周期性的持久化,容易发生数据丢失
    2.AOP:类似于mysql的log_bin,生成.aop文件,记录每次操作的命令
    优点:安全级别较高,不会发生数据丢失
    缺点:一定层度上占用资源,还原数据时效率较低
  • 事务
    1.事务的阶段:multi > 命令行 > exec/discard
    2.注意事项
    redis不支持回滚
    事务中如有命令行错误则全不命令不执行
    事务中如发生运行错误则不影响之后命令的正常执行
    事务中如修改监控的键值对,剩余的事务将不再执行
    3.事务的特性:一致性、隔离性、持久性(ACID)
    redis的事务具备一定的原子性、但不支持回滚
    不完全具备事务的一致性(参照注意事项第3条)
    redis为单线程,具备隔离性
    通过RDB或AOP可以保证持久性
  • 集群 - 哨兵模式
    在这里插入图片描述哨兵为redis的组件,实现集群的高可用性,主要监控各节点状态,如主节点宕机将转移至新节点且通知客户端主节点地址
  • 集群 - Redis Cluster
    在这里插入图片描述
    1.流程
    保存数据时,通过hash算法对数据进行分片,将分片存储到对应的主从节点上(同一分片多节点数据保持一致,保证主节点宕机后数据不丢失),读取数据时,如数据分片不存储于该节点时则转向下一个节点
    2.注意事项
    redis采用了槽的概念(16384个槽),每个节点对应相应的哈希值区间
    扩容时需将其他节点对应的的数据发复制至新的节点
    只能使用0号数据库
  • redis常见问题
    1.雪崩(缓存大面积过期)
    解决:过期时间避免设施相同,甚至过期标志,高并发时加锁排队
    2.击穿(缓存中无对应数据)
    解决:互斥锁
    3.穿透(缓存和数据库均无数据)
    解决:参数校验,布隆过滤器
    4.保持热点数据(过期策略、淘汰机制)
    解决:加锁排队
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值