Redis 总结

 

1.简介

 

高可用,高性能 吞吐量能达到10W级别的nosql缓存中间件。

 

为什么单线程还那么快?

 

因为他底层用的是单线程io多路复用,也就是说 多个io请求 复用 一个线程,主线程 会把多个io放进一个任务队列,由一个任务分发器分发给工作线程进行io,这样批量处理io请求,所以它的性能是很快的

 

2.数据结构 以及应用场景

String  存储字符串 计数,提供了原子性操作

map  存储对象  session 

list   集合 队列  列表(先进先出)  文章列表 好友列表

set  不可重复无序,可以统计点赞列表、关注列表,网站ip访问量

zset  有序不可重复 , 加了个分数 用来排序, 排行榜

zskiplist 跳跃表:多层级链表,写入时随机获取层级,高层级的数据也会写入低层级,查询时会从高层级开始查询,没有查到就降低层级从该节点继续查询,提高查询效率,空间换时间

bitmap 数据结构就是内存中连续的二进制位(bit)并且每个bit位初始值都是0,数据hash后的值转成bit位 存在在bit  用户签到,布隆过滤器: 通过key算bit的占位是否存在,如果bit没有命中那么这个key就没有保存过,如果命中 则说明 这个key 有可能被保存过
布隆过滤器

hyperloglog   不精确统计 统计uv浏览量

1.内部结构是有固定的16384个桶

2.通过对值进行hash 选取低14位 计算出 选的哪个桶

3.再通过15位开始数0的个数,这个个数 大于 桶当前的值 就更新为桶的值 返回1

UV浏览量统计

ziplist

高级用法:

1.pipeline 批量执行命令,减少网络开销

2.lua脚本,串行执行一系列命令,锁,秒杀场景  nginx + lua 直接访问redis(库存获取 和 库存扣减)

3.事务:最后一个功能是事务,但 Redis 提供的不是严格的事务,Redis 只保证串行执行命令,并且能保证全部执行,但是执行命令失败时并不会回滚,而是会继续执行下去。

 

 

3.高可用 架构

1.单例

2.主从

3.主从+sentinel哨兵

4.cluster集群  多master节点,集群slave冗余机制:防止master 和 slave 都挂掉,没有slave切换

 

4.主从复制 + 心跳 + 持久化

matser 10S一次心跳,slave 1S一次心跳 

主从复制是异步的:

1.首次由slave发起psync命令给master

2.master收到消息,根据本地offset 发送消息给slave

3.首次请求会触发全量复制(fork进程来拷贝数据,引起性能抖动),后续就是增量复制(由master 主动发起异步复制)

4.复制超时时间默认60S 超时会认为复制失败

持久化:

rdb快照:将内存数据生成快照替换旧的快照文件,触发机制 60 300 900s,10000 10 1 操作,有可能造成数据丢失(不能优先作为数据恢复方案),持久化fork紫禁城来io操作如果数据文件太大会导致客户端服务暂停,恢复数据速度快,数据文件小

优化快照生成影响性能:控制redis实例内存大小10G以内,部署多master

aof文件追加:每次操作就追加一条操作日志,先写缓存中每秒刷入日志文件,顺序写性能好,丢失数据比较少

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值