Redis-大厂程序员是怎么用的 | 青训营

228 阅读2分钟

一、Redis 是什么

Redis:一种基于内存的数据库系统

特点:

  • 内存存储
  • 数据结构
  • 持久化
  • 分布式
  • 开源

为什么需要Redis

数据分冷热

热数据:经常被访问到的数据

将热数据存储到内存中

Redis 基本工作原理

数据保存在硬盘上防止重启数据消失

数据从内存中读写

增量数据保存到AOF文件

微信图片_20230816213507.jpg 全量数据RDB文件

单线程处理所有操作命令

二、Redis 实际应用

  1. 连续签到

用到Redis的过期

  • Key:掘金的uid
  • value:252
  • expirAt:后天的0点

在原本基础上+1天 没有签到过期

String数据结构

数据结构 - sds

2.消息通知

用list作为消息队列

  • 使用场景:消息通知 当文章更新时,将更新后的文章进行推送到ES

List数据结构Quicklist

3.计数

Hash 数据结构dict

  • rehash:将原来ht[0]中的数据全部迁移到ht[1]
  • 渐进式rehash:平摊所有的访问用不请求过程中

4.排行榜

积分变化时,排名要实时更新

  • 结合dict后,可实现通过key操作跳表的功能

zset 数据结构zskiplist

查找数字7的路径

结合dict后可实现通过key操作跳表的功能

5.限流

  • 要求1秒内放行的请求为N,操作N则禁止访问

server网址

6.分布式锁

开发场景:要求一次只能有一个协程执行

执行完成后,其它等待中的协程才能执行

可以使用redis的setnx实现,利用了两个特性

  • redis是单线程执行命令
  • setnx只有未设置过才能执行成功

大Key、热Key

大Key的危害

  • 读取成本高
  • 容易导致慢查询
  • 主从复制异常,服务器阻塞

业务侧使用大Key的表现

  • 请求Redis超时报错

消除大Key办法:

  • 拆分

  • 压缩

  • 集合类结构hash,list,set,set

    (1) 拆分

    (2)冷热区分

3.缓存穿透、缓存雪崩

热点数据查询绕过缓存,直接查询数据库

大量缓存同时过期