redis高级

 redis性能高的原因:

  1.    数据存储在内存中,操作内存效率比较高

  2.    单线程,减少线程间切换的开销

  3.    支持多种不同数据结构,针对不同业务进行优化

  4.    支持集群化架构,通过分布式技术提升性能


高并发

        提升每次处理最大人数

  1. 多启动几个服务,增强同时并行处理能力

  2. 提升处理效率


吞吐量 、qps、tps

    

        吞吐量 : 系统每秒钟能处理请求量

         qps : query per second 每秒查询量

        tps : teansaction per second 每秒交易量 增删改对数据库有效操作


生产环境使用持久化 :

  1. AOF、RDB 都是同时打开

  2. RDB频率设置第一点,30分钟执行一次

  3. AOF设置为默认每秒写一次磁盘

        生产上有时候需要定位redis中哪些key特别大,哪些业务上key value 设置特别多数据 (商品存放了商品详情占了20G空间 )只能使用RDB文件去分析RDB-Tools

rdb-tools教程:

https://www.cnblogs.com/zhoujinyi/p/13276697.html


RDB可以作为主从全量同步的文件 进行使用

redis.4.0之后混合持久化功能 : 定期生成RDB文件,而两次RDB文件直接数据变化记录AOF

主从同步:

  •     数据从主节点同步到从节点有两种方式: 全量同步(RDB文件),增量同步(缓冲区内存发送命令)

  •  主从同步减少全量同步,增大缓冲区大小(环状数组长度增加)丶 使用主-从-从链式架构减少从主节点到从节点压力


sentinel哨兵

  • 监控发送ping命令给master如果发现master在一定是假呢你没有响应,认为当前master主官下线,通过多个哨兵投票票数超过一半(可配置)标记成客观下线,启动故障转移流程

  • 故障转移 slaveof no one 给 当前选中slave 发送slaverof 新master给其他节点

  • 通知新主从地址信息发送给客户端


cluster集群

 1.集群主要解决问题

  • 海量数据存放到一个master上,内存和其他资源可能会不足

  • 单个master支持不了高并发写入操作,扩展多个master

  • 自动故障转移

2.集群采用散列插槽机制完成分片

  •  散列插槽主要保证新增和删除master节点尽量减少数据迁移

  • 散列插槽一共16384个,添加数据,根据数据crc16值计算属于哪个插槽,找到对应master节点

  • 客户端写数据的时候不用考虑当前连接哪个master,多个master之间采用gossip算法互相通讯传递散列插槽信息,自动重定向到准确master


缓存穿透、击穿、雪崩

    1.穿透: 

    当用户访问不存在的redis key,如果使用cache-aside,访问数据库数据但是数据库中也不存在,再把数据写入redis.如果用户一直访问不存在的key,请求全部回落到数据库中,增加数据库压力

    解决方案:

  • 数据库中如果不存在数据,往redis中存在一个空值"" 设置过期时间,在这段时间内获取到空串返回前端,让前端提示数据不存在,避免访问数据库.无法避免请求模拟不同数据

  • 布隆过滤器, 通过分槽将存在数据在槽中打上标记1,数据不存在在槽中默认值为0.当一个数据过来计算hash值找到对应槽,如果槽数据为1,就认为数据在数据库中是存在的,如果为0,数据不存在直接拒绝.

            布隆过滤器认为数据存在,不一定存在。

            布隆过滤器认为数据不存在,一定不存在.

            数据删除不是特别好实现,可以选择不处理,降低命中率.

     2.雪崩

        放数据到redis时候一般都会设置过期时间,如果所有商品失效时间都一样.导致所有商品都需要从数据库获取,增大数据库压力.

        解决方案

        将商品设置过期时间假如随机数,让商品不要再同一时间过期

    3.击穿

    击穿针对的是一个key,失效时由于并发量过大,在key失效过程中,所有请求都向数据库获取数据.

    解决方案:

        将key在活动期间设置为不失效,同时使用定时任务,定期将数据库中数据同步到redis



 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值