首页 > 数据库 >Redis学习

Redis学习

时间:2024-03-22 17:44:06浏览次数:33  
标签:缓存 Redis DB 学习 Lua Key Bloom

1.1 缓存使用场景

  • 1) 访问量很大的时候,DB数据在磁盘上。如果加入缓存,可以先去缓存读,如果没有再去DB读。可以减轻访问压力Redis没有锁,单线程、单进程。读11w / s, 写 8万 /s
  • 2) 做Session分离
  • 在各个Tomcat间复制
  • 3)做分布式锁
  • 4)做乐观锁

1.2 缓存的概念

 

缓存是在CPU上的高速存储。

  • 前端也可以缓存。
  • 浏览器缓存 (离线浏览,浏览器内部有缓存)
  • APP缓存,(图片,SQLite)
  • 网络端缓存 (Ningx)
  • 边缘缓存 

 

2.4 Lua与Redis

Lua是一个脚本语言。可以嵌入程序中。在Nginx上使用lua来实现高并发。Lua可以直接运行Redis。

 

4.2 缓存穿透

如果缓存里面没有,则去数据库。这个现象是缓存穿透。

  • 可以对不存在的Key设置默认值,加入缓存
  • 布隆过滤。Bloom Filter。hash函数多,数组长度长则hash碰撞概率小。如果没有的话则打回。Bloom Filter 在Redis之前。(Bloom 要与DB同步)
1)雪崩

大量Key都失效。一下给数据库带来很大压力。

  1. 可以的失效期分散一些
  2. 设置二级缓存(数据不一定一致)
  3. 高可用(可能是脏读。主从模式)
2)缓存击穿

Key有,但是访问量很大。某个热点Key失效了。

  • 用分布式锁,控制访问量
  • 不设超时,会造成一致性问题

 

4.3 缓存问题,数据不一致

update db数据但没update,删除redis,高并发时候又有请求,把旧数据又读出来了。

  • 延时双删,更新时候删一次,两秒后再删一次
  • 设置缓存过期时间10s
  • 将删除缓存失败记录日志里面,然后用脚本删除

 

4.4 并发竞争

多个客户端set 同一个key。

标签:缓存,Redis,DB,学习,Lua,Key,Bloom
From: https://www.cnblogs.com/ylxn/p/18090170

相关文章

  • 使用FastAPI+SQLAlchemy+Redis+Celery 编写一个完整的用户登录验证API
    使用PyQt5+FastAPI+SQLAlchemy+Redis+Celery做一个登录注册页(三)本文将介绍用PyQt5+FastAPI+SQLAlchemy+Redis+Celery做的一个登录注册页,使用邮箱接收验证码,本文介绍是前后端分离的实现方式,厚后端使用FastAPI+SQLAlchemy+Redis+Celery,你可以将PyQt5改为PySide2以获得更宽松......
  • Java知识学习13(AQS详解)(转载)
    1、AQS介绍?AQS的全称为AbstractQueuedSynchronizer,翻译过来的意思就是抽象队列同步器。这个类在java.util.concurrent.locks包下面。AQS就是一个抽象类,主要用来构建锁和同步器。publicabstractclassAbstractQueuedSynchronizerextendsAbstractOwnableSynchronizer......
  • Redis系列十:Pipeline详解
    转载自:https://blog.csdn.net/w1lgy/article/details/84455579一、pipeline出现的背景:redis客户端执行一条命令分4个过程:发送命令-〉命令排队-〉命令执行-〉返回结果 1这个过程称为Roundtriptime(简称RTT,往返时间),mgetmset有效节约了RTT,但大部分命令(如hgetall,并没......
  • Vue学习笔记57--vue默认插槽 +
    vue默认插槽示例一:不使用插槽Category.vue<template><divclass="category"><h3>{{title}}</h3><ul><liv-for="(item,index)inlistData":key="index">{{item}}</li>......
  • SNMP(简单网络管理协议)学习
    SNMP是英文"SimpleNetworkManagementProtocol"的缩写,中文意思是"简单网络管理协议"。SNMP是一种简单网络管理协议,它属于TCP/IP五层协议中的应用层协议,用于网络管理的协议。SNMP主要用于网络设备的管理。由于SNMP协议简单可靠,受到了众多厂商的欢迎,成为了目前最为广泛的网管协议......
  • 浮木云学习日志(12)---表格设计(二)
    上次做了一个包括表格的页面设计,个人认为关于表格设计的内容介绍比较笼统,可能没办法直接对这个组件进行透彻的了解,本次我就来详细介绍一下如何通过高级表格设计玩转表格设计。感兴趣的小伙伴可以去他们官网https://www.fumucloud.com/一起体验一下这个高级表格组件。本次记录我们......
  • 4 Redis持久化
    Redis是一个内存数据库,所以其运行效率非常高。但也存在一个问题:内存中的数据是不持久的,若主机宕机或Redis关机重启,则内存中的数据全部丢失。当然,这是不允许的。Redis具有持久化功能,其会按照设置以快照或操作日志的形式将数据持久化到磁盘。根据持久化使用技术的不同,Red......
  • Pytorch学习笔记(一)
    一、Tensor1.1 基本概念Tensor,又名张量,是pytorch中重要的一种数据结构,从工程的角度上来说,可以很简单将其认为是与numpy的nadarray类似的数组,用来保存数据支持高效的科学计算。但是PyTorch中的Tensor支持cuda用GPU加速。1.2基本操作从接口的角度来说,对tensor的操作可以分......
  • CentOS学习笔记-离线环境下禁止yum命令从repo中下载软件
    CentOS学习笔记-离线环境下禁止yum命令从repo中下载软件CentOSLinuxyum离线环境下使用yuminstall安装rpm时,还是会试图联网从系统的repo中去寻找和下载依赖。使用下面的配置来禁止这个功能。使用yum-config-manager--disable*可以禁用所有的repo,使用yum-config-manager--ena......
  • 无计算机基础想进AI方向,可以通过以下几个阶段学习AI,具体建议如下:
    无计算机基础想进AI方向,可以通过以下几个阶段学习AI,具体建议如下:阶段一:数学与编程基础构建在这个阶段,学员将专注于夯实数学基础,涵盖统计学、线性代数和微积分等核心数学知识,确保对机器学习和深度学习算法背后的数学原理有深入理解。同时,系统学习Python语言,包括语法结构、数据类......