Redis - 我是怎么用的| 青训营笔记

102 阅读3分钟

这是我参与「第五届青训营」伴学笔记创作活动的第17天。

前言

今日份的笔记,说到redis,我其实还想到前段时间开源社区那个自称比redis快5倍的KeyDB。它曾称要取代redis,最后也就那样了。所以说,redis目前依旧是“版本答案”,尤其作为一个后端程序员,在很多业务场景中,我们都需要用到它。比如我自己的毕设项目中,就用它作为缓存了,提高程序响应速度。

笔记内容

1.redis为什么这么快?

主要有以下三点原因:

  • 基于内存:Redis是使用内存存储,没有磁盘IO上的开销。数据存在内存中,读写速度快。
  • IO多路复用模型:Redis 采用IO多路复用技术。Redis 使用单线程来轮询描述符,将数据库的操作都转换成了事件,不在网络I/O上浪费过多的时间。
  • 高效的数据结构:Redis 每种数据类型底层都做了优化,目的就是为了追求更快的速度。

2.Redis的内存用完了会怎样?

如果达到设置的上限,Redis的写命令会返回错误信息(但是读命令还可以正常返回)。
也可以配置内存淘汰机制,当Redis达到内存上限时会冲刷掉旧的内容。

3.Redis持久化机制?

持久化就是把内存的数据写到磁盘,防止服务宕机导致内存数据丢失。
Redis支持两种方式的持久化,一种是RDB的方式,一种是AOF的方式。前者会根据指定的规则定时将内存中的数据存储在硬盘上,而后者在每次执行完命令后将命令记录下来
RDB方式:RDB是 Redis 默认的持久化方案。RDB持久化时会将内存中的数据写入到磁盘中,在指定目录下生成一个dump.rdb文件。Redis 重启会加载dump.rdb文件恢复数据。

AOF方式:以独立日志的方式记录每次写命令,Redis重启时会重新执行AOF文件中的命令达到恢复数据的目的。
默认情况下Redis没有开启AOF方式的持久化,可以通过appendonly参数启用:appendonly yes。开启AOF方式持久化后每执行一条写命令,Redis就会将该命令写进aof_buf缓冲区,AOF缓冲区根据对应的策略向硬盘做同步操作。

4.Redis应用场景有哪些?

缓存热点数据,缓解数据库的压力。
②利用Redis原子性的自增操作,可以实现计数器的功能,比如统计用户点赞数、用户访问数等。
分布式锁。在分布式场景下,无法使用单机环境下的锁来对多个节点上的进程进行同步。可以使用 Redis 自带的 SETNX 命令实现分布式锁,除此之外,还可以使用官方提供的 RedLock 分布式锁实现。
简单的消息队列,可以使用Redis自身的发布/订阅模式或者List来实现简单的消息队列,实现异步操作。
限速器,可用于限制某个用户访问某个接口的频率,比如秒杀场景用于防止用户快速点击带来不必要的压力。
好友关系,利用集合的一些命令,比如交集、并集、差集等,实现共同好友、共同爱好之类的功能。

小结

大概整理了这些内容,都是比较实用和常见的知识点,既可以帮助我们去理解Redis,又可以复习一部分“八股”。

参考文献

青训营资料