首页 > 技术文章 > redis知识整理

magicqq 2020-09-08 11:24 原文

基本数据类型

  1. string 最基本的数据类型,k-v结构中的v

  2. hash 相当于map结构,多个k-v,每对k-v都是string-string,字段无序

  3. list 列表类型,相当于数组结构

  4. set 集合类型,与list相比,set中的元素不重复

  5. zset 有序集合,与set相比,带有排序权重

 

场景应用

待补充

redis持久化方式

  1. RDB

    RDB方式是每次将当前的redis数据存储转态(相当于snapshot)持久化到磁盘上,每次都是全量存储当前所有的数据,覆盖写的方式写文件;这种方式的好处是只有一个备份文件,好维护,数据恢复快;缺点是每次操作的全量数据,在数据量比较多的情况下备份时间比较长,在备份过程中发生了故障的话,这段时间内的数据会丢失,且数据量太大时,备份过程如果占用太多cpu和i/o,会阻塞主线程,即redis主服务会有受到影响。

  1. AOF

  AOF方式是每次是把redis的写操作命令持久化到磁盘上,每次都是追加式的添加;这种方式的好处是每次增量写,备份时间短;缺点是会生成很多文件,不好维护,如果写命令有阻塞情况存在,数据恢复有可能会失败

 

 

 

redis集群模式主从模式(master-slave)

  1. 一主一从、一主多从

master能够处理写请求和读请求;slave只能处理读请求;master同步数据到slave;当master挂掉之后,没有机制来保证集群的可用性,无法对外提供写服务,但是可以处理读请求

 

  1. 哨兵模式(setinel)

哨兵模式是主从模式的升级,加了一个哨兵集群来监控redis的master的情况,提供一致性服务,提高了服务可用性,当master挂掉后,哨兵能够感知到服务的状况从未能够在剩下的slave中重选master

哨兵感知master的状态是通过跟master定时发送信息,以投票的方式选择master是否下线;过程大致如下

1.哨兵1超过一定时间没有收到master的心跳消息,主观认为master下线,给出自己的投票

2.哨兵2能够收到master的信条消息,认为master在线

3.哨兵集群统计所有的投票,超过一定的下线投票则认为master客观下线

 

  1.  集群模式

 

 

 

集群模式是对单机master的扩展,以上两种模式下都是只有一个master,数据量只能依靠单机master的能力;集群模式下可以有多个master,通过分片算法(虚拟哈希槽算法),将不同的key映射到不同的master上,实现容量扩容,整体数据量为多个master的集合,每个区可以部署成master-slave的模式

关于缓存的知识

  1. 缓存穿透 大量请求缓存不存在且数据库的数据,造成数据库压力;解决方法:1.请求进入服务之前,对请求的数据进行基础的数据校验 2.服务进行限流 3.可以使用布隆过滤器缓存所有合法数据,过滤非法数据 4.缓存非法的数据,值为0值,设置较短的过期时间

  2. 缓存雪崩 是指大量缓存的数据在同一时间内过期,造成大量请求压力落到了持久化存储上;解决方法:设置过期时间时设计成分散的过期时间点,避免过期高峰

  3. 缓存击穿 某一热点数据过期,导致绕过缓存大量请求压力落到数据库;解决方法:热点数据过期策略变成永不过期

 

推荐阅读