Redis基础 | 青训营笔记

90 阅读2分钟

这是我参与[第五届青训营]伴学笔记创作活动的第12天 主要包括以下四部分内容

  • 为什么使用Redis
  • Redis的使用场景
  • Redis的常见命令
  • 使用Redis的注意事项

概述

通过 Redis 来做分布式锁是一种比较常见的方式。

Redis的list可以作为一个简单的消息队列来使用

一般是通过 Redis + Lua 脚本的方式来实现限流。

为什么需要Redis?

Redis 内部做了非常多的性能优化,比较重要的主要有下面 3 点:

  • Redis 基于内存,内存的访问速度是磁盘的上千倍;
  • Redis 基于 Reactor 模式设计开发了一套高效的事件处理模型,主要是单线程事件循环和 IO 多路复用(Redis 线程模式后面会详细介绍到);
  • Redis 内置了多种优化过后的数据结构实现,性能非常高。

Redis的五种数据结构

  • 5 种基础数据结构 :String(字符串)、List(列表)、Set(集合)、Hash(散列)、Zset(有序集合)。
  • 3 种特殊数据结构 :HyperLogLogs(基数统计)、Bitmap (位存储)、Geospatial (地理位置)。

Redis持久化的两种方式:ROF(保存增量数据的日志文件)/AOB(保存全量数据的日志文件)

Redis的基本操作

  • GET/SET/DEL/INCR/SETNX
  • HSET/HGET/HINCRBY
  • LPUSH/RPOP/LRANGE
  • ZADD/ZRANGEBYSCORE/ZREVRANGE/ZINCRBY/ZSCORE

在字节跳动,使用Redis有哪些注意事项

  • 缓存穿透(热点数据查询绕过缓存,直接查询数据库)、缓存雪崩(大量缓存同时过期) 解决方案:(1)缓存空值(2)布隆过滤器
  • 慢查询场景(一次操作过多的Key(mset/hmset/sadd/zadd),导致redis慢查询的操作比如单批次不要超过100,不然性能下降)
  • 大Key(某个key对应的value很大,占用的redis空间很大 ,使用大Key将导致Redis系统不稳定)、热Key(用户访问一个key的QPS特别高,导致出现CPU负载突增或者不均的情况,将导致Redis实例出现负载突增,负责均衡流量不均的情况。导致单实例故障)

参考

缓存基础常见面试题总结(付费) | JavaGuide(Java面试+学习指南)

【后端专场 学习资料七】第五届字节跳动青训营 - 掘金 (juejin.cn)