Redis知识点

Memcache

Redis和Memcache的区别?
优点:

  1. MC 处理请求时使用多线程异步 IO 的方式,可以合理利用 CPU 多核的优势,性能非常优秀;
  2. MC 功能简单,使用内存存储数据;
  3. MC 的内存结构以及钙化问题;
  4. MC 对缓存的数据可以设置失效期,过期后的数据会被清除;
  5. 略采用延迟失效,就是当再次使用数据时检查是否失效;
  6. 满时,会对缓存中的数据进行剔除,剔除时除了会对过期 key 进行清理,还会按 LRU 策略对数据进行剔除。
    缺点:
  7. key 不能超过 250 个字节;
  8. value 不能超过 1M 字节;
  9. key 的最大失效时间是 30 天;
  10. 只支持 K-V 结构,不提供持久化和主从同步功能。

Redis优点:

  • Redis 采用单线程模式处理请求。采用非阻塞的异步事件处理机制;另一个是缓存数据都是内存操作 IO 时间不会太长,单线程可以避免线程上下文切换产生的代价。
  • Redis 支持持久化,所以 Redis 不仅仅可以用作缓存,也可以用作 NoSQL 数据库。
  • 相比 MC,Redis支持多种数据格式,例如 list、set、sorted set、hash 等。
  • Redis 提供主从同步机制,Cluster 集群部署能力,能够提供高可用服务。

Redis数据结构

String、Hash、List、Set、SortedSet

String

redis中最常用的数据结构

应用场景:

  1. 缓存功能
  2. 计数器
  3. 共享session

Hash

类似于Map的一种结构

List

有序列表

应用:

  1. 消息队列
  2. 数据分页

Set

无序列表,自动去重
基于set交集并集差集操作

SortedSet

排序的 Set

应用:

  1. 排行榜
  2. 带权重的队列

Redis指令

keys

Redis的单线程的。keys指令会导致线程阻塞一段时间,线上服务会停顿,直到指令执行完毕,服务才能恢复。

Redis常见问题

  1. 缓存雪崩 大量key同一时间失效,解决方法:缓存失效时间设置随机值
  2. 缓存穿透 查询一个不存在的key,解决方法:参数校验,布隆过滤器
  3. 缓存击穿 一个热点key瞬间失效,解决方法:热点数据永不过期

缓存穿透

Redis持久化

RDB做镜像全量持久化,AOF做增量持久化。

Redis 提供了 RDB 和 AOF 两种持久化方式,RDB 是把内存中的数据集以快照形式写入磁盘,实际操作是通过 fork 子进程执行,采用二进制压缩存储;AOF 以文本日志的形式记录 Redis 处理的每一个写入或删除操作。

RDB 把整个 Redis 的数据保存在单一文件中,比较适合用来做灾备,但缺点是快照保存完成之前如果宕机,这段时间的数据将会丢失,另外保存快照时可能导致服务短时间不可用。
AOF 对日志文件的写入操作使用的追加模式,有灵活的同步策略,支持每秒同步、每次修改同步和不同步,缺点就是相同规模的数据集,AOF 要大于 RDB,AOF 在运行效率上往往会慢于 RDB。

RDB会耗费较长时间,不够实时,在停机的时候会导致大量丢失数据,所以需要AOF来配合使用。在redis实例重启时,会使用RDB持久化文件重新构建内存,再使用AOF重放近期的操作指令来实现完整恢复重启之前的状态。

Redis集群

Redis Sentinal 着眼于高可用,在master宕机时会自动将slave提升为master,继续提供服务。
Redis Cluster 着眼于扩展性,在单个redis内存不足时,使用Cluster进行分片存储。

posted @ 2021-07-03 21:40  少年三更  阅读(47)  评论(0编辑  收藏  举报