当前位置: 首页 > news >正文

Redis简述

  • Redis是什么
  • Redis数据类型
  • Redis应用场景
    • 缓存
    • 计数器
    • 分布式会话
    • 排行榜
    • 最新列表
    • 分布式锁
    • 消息队列
  • Redis出现的问题
    • 穿透
    • 击穿
    • 雪崩
  • Redis为什么速度快

Redis是什么

redis是一种高速缓存数据库

Redis数据类型

string
hash
list
set
zset

Redis应用场景

缓存

Redis作为缓存层,MySQL作为存储层,绝大部分请求的数据都是从Redis中获取,由于Redis具有支撑高并发的特性,所以缓存通常能起到加速读写和降低后端压力的作用

计数器

使用Redis作为计数的基础工具,它可以实现快速计数、查询缓存的功能,同时数据可以异步落地到其他数据源

分布式会话

一个分布式Web服务将用户的Session信息(例如用户登录信息)保存在各自服务器中,这样会造成一个问题,出于负载均衡的考虑,分布式服务会将用户的访问均衡到不同服务器上,用户刷新一次访问可能会发现需要重新登录,这个问题是用户无法容忍的

为了解决这个问题,可以使用Redis将用户的Session进行集中管理,在这种模式下只要保证Redis是最高可用和扩展性的,每次用户更新或者查询登录信息都直接从Redis中集中获取

排行榜

使用有序set可以做一个排行榜。例如视频网站需要对用户上传的视频做排行榜,榜单的维度可能是多个方面的:按照时间、按照播放数量、按照获得的赞数

最新列表

依赖list的数据具有顺序的特征对信息进行管理
使用队列模型解决多路信息汇总合并的问题
使用栈模型解决最新消息的问题

分布式锁

想要实现分布式锁,必须要求Redis有【互斥】的能力,我们可以使用SETNX命令,这个命令表示SET if Not Exists,即如果key不存在,才会设置它的值,否则什么也不做
两个客户端进程可以执行这个命令,达到互斥,就可以实现一个分布式锁

消息队列

Redis 中list的数据结构实现是双向链表,所以可以非常便捷的应用于消息队列(生产者 / 消费者模型)。消息的生产者只需要通过lpush将消息放入 list,消费者便可以通过rpop取出该消息,并且可以保证消息的有序性

Redis出现的问题

穿透

缓存穿透:指在redis缓存中不存在数据,这个时候只能去访问持久层数据库,当用户很多时,缓存都没有命中就会照成很大压力
解决方案
(1)布隆过滤器(对可能查询的数据先用hash存储)
(2)缓存空对象:在没有的数据中存一个空,而这些空的对象会设置一个有效期)

击穿

缓存击穿:指在同一个时间内访问一个请求的请求数过多,而在这个时候缓存某个key失效了,这个时候就会冲向数据库照成缓存击穿
解决方案
(1)设置缓存永远不过期
(2)加互斥锁,使用分布式锁,保证每个key只有一个线程去查询后端服务,而其他线程为等待状态。这种模式将压力转到了分布式锁上

雪崩

缓存雪崩:在某个时间段,缓存集体过期、redis宕机
解决方案:给key的失效时间设置为随机时间,避免集体过期;双缓存;加互斥锁

Redis为什么速度快

1.redis是基于内存的,内存的读写速度非常快

2.redis是单线程的,省去了很多上下文切换线程的时间

3.redis使用多路复用技术,可以处理并发的连接

http://www.lryc.cn/news/103769.html

相关文章:

  • Redis 操作List
  • 多个List 合并变成一个List+一个List 根据某个字段相等的另一个字段相加,并排序变成新的List
  • 华为流程体系:流程架构「OES方法」
  • c# 创建一个未定义类的临时对象列表
  • el-button增加下载功能
  • prometheus和cAdvisor组合
  • 计算机网络(2) --- 网络套接字UDP
  • Idea 结合docker-compose 发布项目
  • django
  • c++游戏框架
  • v-model绑定checkbox无法动态更新视图
  • 原生html—摆脱ps、excel 在线绘制财务表格加水印(html绘制表格js加水印)
  • 微信小程序配置上传多个u-upload上传
  • python使用win32com库实现对Excel的操作
  • <Maven>项目依赖导入Maven本地仓库命令
  • 爬虫006_python中的运算符_算术运算符_赋值运算符_复合赋值运算符_比较运算符_逻辑运算符_逻辑运算符性能提升---python工作笔记024
  • CPU Architecture Methodologies
  • Spring的@Scheduled
  • IP隧道技术原理
  • Docker私有仓库
  • LLM微调 | Prefix-Tuning, Prompt-Tuning, P-tuning, P-tuning-v2
  • Ansible 的脚本 --- playbook 剧本
  • CSP-J模拟赛 / 买文具
  • leecode算法--每日一题1
  • LViT:语言与视觉Transformer在医学图像分割
  • 蓝桥杯上岸每日N题 第五期(山)!!!
  • IDEA Writing classes... 比较慢
  • opencv中轮廓相关属性
  • Leetcode 144. 二叉树的前序遍历
  • 医学影像PACS系统源码:多功能服务器和阅片系统