首页 > 数据库 >Redis 笔记

Redis 笔记

时间:2024-05-21 19:01:23浏览次数:18  
标签:缓存 删除 Redis 数据库 redis 笔记 key 数据

1. 什么是redis

redis 是高性能缓存数据库,基于内存运行key-value存储系统,提供分布式锁,支持事务,持久化,多种分布式集群方案。使用单线程的多路IO服用模型。

redis支持数据类型 String, Hash, List, Set, Sorted Set 等

String存储字符串,

Hash存储key-value键值对集合

List字符串链表

Set hash实现,元素不重复,提供了交集并集差集等操作

ZSet 有排序的Set

 

2. redis为什么快

redis是一个内存数据库,数据都在内存中,纯粹的内存操作非常快的,其次redis是单线程的多路IO服用模型,单线程可以省去多线程时CPU上下文会切换的时间,也不用考虑各种锁问题。

 

3. redis的数据保存方式

数据保存方式 AOF 和 RDB

RDB是一个快照文件,数据一定会丢失

AOF是一个追加文件,日志,会记录很多原始的命令语句,rewrite会清理过程,只保留最终数据

4.x版本提供了混合持久化方式,文件中既有RDB也有AOF,做rewrite时会把文件清空,再做RDB数据写入,

 

4. redis如何删除过去数据

redis如何删除过去数据,Redis中有个设置过期时间的功能,即对存储在redis数据库中的值可以设置一个过期时间

redis删除数据包括定期删除和惰性删除,

定期删除:默认是每隔100毫秒就随机抽取一些设置了过期时间的key,检查其是否过期,如果过期就删除。

惰性删除:定期删除可能会导致很多过期key到了时间并没有被删除,每次查询时判断是否被删除

 

5. 缓存雪崩:缓存大面积失效,之后的请求都会直接查询数据库,造成数据库短时间内承受大量请求而挂掉。

    1. 发现其中某台Redis服务器宕机之后尽快恢复,同时选择合适的内存淘汰策略

    2. 本地缓存+接口线流和服务降级

    3. 利用Redis持久化机制保存的数据进行缓存恢复操作

 

6. 如何保证缓存与数据库双写时的数据一致性,

    1. 常规使用方式,先读取缓存,缓存没有的话,就读取数据库,然后取出数据进行缓存,同时返回数据

    2. 延时双删的方式,更新数据操作时,先删除缓存,再更新数据库,休眠1秒后再次删除缓存,性能上可能受影响

 

7. 关于缓存穿透

缓存穿透就是大量请求的Key根本不存在于缓存中,导致这些请求直接转到了数据库查询

    1. 查询时构建大量无效的Key

    2. 使用布隆过滤器可以非常方便地判断一个给定的数据是否存在于海量的数据中,大致思路是把所有可能存在的请求的值都存放在布隆过滤器中,当用户请求过来时,先判断用户请求的数据是否存在于布隆过滤器中,不存在的话直接返回错误信息给客户端, 存在的话进入后面的流程,布隆过滤器的判断结果,如果某个数据不存在一组数据中的话,则一定时不存在。

 

8. 如何解决并发竞争Key的问题,就是多个系统同一时间对同一个key进行操作

    1. 使用分布式锁,代码中执行某个方法时使先获取锁,判断是否能够获取到锁,如果获取到锁则执行后续业务,并且对该方法添加分布式锁,完成业务流程后删除当前服务节点的锁资源。如果没有获取到锁,则表示其他服务节点在执行该方法,不再往后执行

标签:缓存,删除,Redis,数据库,redis,笔记,key,数据
From: https://www.cnblogs.com/Cxiaoao/p/18204731

相关文章

  • 小小Redis数据删除策略,拿捏
    Redis的删除策略水一篇Redis是一种内存级数据库,所有数据均存放在内存中,内存中的数据可以通过TTL指令获取其状态TTL返回的值有三种情况:正数,-1,-2正数:代表该数据在内存中还能存活的时间-1:永久有效的数据-2:已经过期的数据或被删除的数据或未定义的数据删除策略就是针......
  • DDD 笔记
    1.简单讲讲DDD,和DDD哪些优势领域驱动设计。就是通过领域来指导软件设计,是一种十分抽象的软件设计思想,它主要分为战略设计和战术设计战略方面,通过事件风暴进行领域模型的划分,划分出核心域,子域,支撑域,定义通用语言,划分出界限上下文。在战术设计方面,ddd将架构分层,“松耦合,高内聚”......
  • 线性代数笔记——行列式(1)
    1.n级排列:由1,2,3,...,n组成的一个有序数组  n级排列的个数有n!=n(n-1)(n-2)...3*2*12.逆序:大数排在小数前面逆序数:逆序的总数如4213的逆序数    N(4213)=3+1+0+0=4如标准排列的逆序数为   N(123....n)=0n,n-1,n-2,...,3,2,1的逆序数为N(n(n-1)(n......
  • 《从小工到大工》阅读笔记
         在老师的推荐之下,我阅读了这本书这本书的作者是AndrewHunt和DavidThomas,他们是两位经验丰富的软件开发者。他们在书中分享了自己的经验和见解,帮助读者成为更好的程序员。这本书的主要内容包括软件开发的基本原则、编程技巧、代码质量、工作流程等方面。   ......
  • Asp-Net-Core开发笔记:给SwaggerUI加上登录保护功能
    前言#在SwaggerUI中加入登录验证,是我很早前就做过的,不过之前的做法总感觉有点硬编码,最近.Net8增加了一个新特性:调用MapSwagger().RequireAuthorization来保护SwaggerUI,但官方的这个功能又像半成品一样,只能使用postmancurl之类的工具带上Authorizationheader来请......
  • Asp-Net-Core开发笔记:使用ActionFilterAttribute实现非侵入式的参数校验
    前言#在现代应用开发中,确保API的安全性和可靠性至关重要。面向切面编程(AOP)通过将横切关注点(如验证、日志记录、异常处理)与核心业务逻辑分离,极大地提升了代码的模块化和可维护性。在ASP.NETCore中,利用ActionFilterAttribute可以方便地实现AOP的理念,能够以简洁、高效的方式进行......
  • 《构建之法》阅读笔记之二
    第二部分:实践指南主题: 构建的实际应用内容概要:构建过程: 详细介绍了构建过程中的各个阶段,包括需求分析、设计、开发、测试等。对每个阶段的任务和方法进行了具体的描述,例如需求分析阶段可以采用用户故事、用例分析等方法;设计阶段可以采用面向对象设计、设计模式等方法。构......
  • 《构建之法》阅读笔记之一
    第一部分:理论基础主题: 构建的概念与原理内容概要:构建的本质: 构建是指通过组合和搭建各种元素来创造新的事物或系统。作者解释了构建的概念,强调了它在现代技术和工程领域中的重要性。构建不仅仅是建造物理产品,也包括软件、服务、组织结构等方面的构建。构建的原理: 介绍了......
  • 《构建之法》阅读笔记之三
    第三部分:进阶探索主题: 构建的未来发展内容概要:新技术趋势: 探讨了当前和未来构建领域的新技术趋势,如人工智能、区块链、物联网等。分析了这些新技术对构建方式和方法的影响,以及如何利用这些技术来创新和优化构建过程。构建文化: 强调了构建文化的重要性,包括团队协作、创新......
  • powershell7升级笔记
    https://learn.microsoft.com/zh-cn/powershell/scripting/install/installing-powershell-on-windows?view=powershell-7.3#msi安装powershell7法一:推荐MSI安装方式,全打钩,可以自动配置环境变量和右键菜单https://learn.microsoft.com/zh-cn/powershell/scripting/install/i......