redis项目实战_redis的使用

redis项目实战_redis的使用Redis项目总结缓存更新策略 1.更新策略 | | 内存淘汰 | 超时剔除 | 主动更新 | | : : | : : | : : | : : | | 说明 | 不用自己维护,利用Redis内存淘

Redis项目总结-

Redis项目总结–缓存更新策略

1.更新策略

内存淘汰 超时剔除 主动更新
说明 不用自己维护,利用Redis内存淘汰机制,内存不足时自动淘汰部分数据,下次查询时更新缓存 给缓存数据添加过期时间,到期删除,下次查询时更新缓存 编写业务逻辑,在修改数据库的同时更新缓存
一致性 一般(取决于过期时间的长短)
维护成本

低一致性场景选内存淘汰,高一致性场景选主动更新,也可以和超时剔除结合使用

2.主动更新的三种方案(一般用方案一)

方案一:在更新数据库 的同时更新缓存。

方案二:缓存与数据库整合为一个服务,由服务来维护一致性,调用者调用该服务,无需关心缓存一致性问题。

  • 优点:保证了数据的一致性
  • 缺点:开发成本高

方案三:调用者只操作缓存,由其他线程异步将缓存数据持久化到数据库。

  • 优点:异步更新缓存数据,效率高。两次异步更新之间,对一个数据进行了多次修改,最终只有最后一次的更新有效,相当于将多次更新合并为一次。
  • 缺点:维护成本高,一致性和可靠性存在问题。数据变动后到下一次异步更新前数据不一致。若出现宕机则数据丢失。

3.主动更新方案一操作缓存和数据库的三个问题

(1)删缓存还是更新缓存(一般选删除缓存)

  • 更新缓存:每次更新数据库都更新缓存,无效写操作多
  • 删除缓存:更新数据库时让缓存失效,查询时再更新缓存

(2)如何保证缓存和数据库操作同时成功或失败

  • 单体系统:将缓存与数据库操作放到同一个事务
  • 分布式系统:利用TCC等分布式事务事务方案

(3)先操作缓存还是先操作数据库(会引发两种不同的线程安全问题)

  • 先删缓存再操作数据库
  • 先操作数据库再删缓存

4.缓存和数据库操作顺序引发的线程安全问题

一般更新的操作比查询和写入缓慢,第二种操作发生异常的概率比第一种操作低,所以一般使用先操作数据库再删缓存

(1)先删缓存再操作数据库

正常情况:

img1

异常情况:

img2

(2)先操作数据库再删缓存

正常情况:

img3

异常情况:

img4

原文地址:https://www.cnblogs.com/LoginX/archive/2022/12/08/Login_X61.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/4439.html

(0)
上一篇 2023-06-19
下一篇 2023-06-19

相关推荐

  • Python s_irusr:优秀的字符串处理工具

    Python s_irusr:优秀的字符串处理工具在Python中,字符串是非常重要的数据类型之一。在各种应用场景中,我们经常需要进行字符串的处理、拼接、转换、比较等操作。这时候,字符串处理工具就会成为我们必不可少的工具之一。Python s_irusr正是其中一个优秀的字符串处理工具。下面,我们将从多个方面对其进行详细阐述:

    2024-01-05
    119
  • 修改redis配置文件_redis配置

    修改redis配置文件_redis配置介绍 Redis是一个开源的内存中键值数据存储。Redis有几个命令,可让您即时更改Redis服务器的配置设置。本教程将介绍其中一些命令,并说明如何使这些配置更改永久生效。 如何使用本指南 本指南以…

    2023-02-28
    164
  • PostgreSQL中三种自增列sequence,serial,identity区别

    PostgreSQL中三种自增列sequence,serial,identity区别这三个对象都可以实现自增,这里从如下几个维度来看看这几个对象有哪些不同,其中功能性上看,大部分特性都是一致的或者类似的。 1,sequence在所有数据库中的性质都一样,它是跟具体的字段不是强绑定的,

    2023-03-26
    158
  • 如何用C++自己实现mysql数据库的连接池?[通俗易懂]

    如何用C++自己实现mysql数据库的连接池?[通俗易懂]为什么是mysql? 现在几乎所有的后台应用都要用到数据库,什么关系型的、非关系型的;正当关系的,不正当关系的;主流的和非主流的, 大到Oracle,小到sqlite,以及包括现在逐渐流行的基于物联网

    2023-04-19
    168
  • 频繁项集的产生及经典算法[通俗易懂]

    频繁项集的产生及经典算法[通俗易懂]前言: 关联规则是数据挖掘中最活跃的研究方法之一, 是指搜索业务系统中的所有细节或事务,找出所有能把一 组事件或数据项与另一组事件或数据项联系起来的规则,以获 得存在于数据库中的不为人知的或不能确定的

    2022-12-20
    143
  • Python安装matplotlib方法

    Python安装matplotlib方法Python是一种广泛使用的编程语言,它可以运用于诸多领域,包括数据科学、机器学习、人工智能、自然语言处理等等领域。而Matplotlib作为Python的一种绘图库,可以以简单而又优美的方式生成高质量的图形,因此也是Python程序员必不可少的工具之一。以下是Python安装Matplotlib的方法:

    2024-06-19
    46
  • mysql8.0文档_Mysql事务

    mysql8.0文档_Mysql事务以下文章来源于MySQL解决方案工程师,作者徐轶韬 MySQL8.0里包括一款功能——CPU资源分组管理。它实现的目的是将CPU资源分组,并且赋予运行不同类型的查询。通过它可以解决DBA的一些痛点,…

    2023-01-31
    143
  • 数据库的范式详解[通俗易懂]

    数据库的范式详解[通俗易懂]关系数据库设计之时是要遵守一定的规则的。尤其是数据库设计范式 现简单介绍1NF(第一范式),2NF(第二范式),3NF(第三范式)和BCNF,另有第四范式和第五范式留到以后再介绍。 在你设计数据库之时

    2023-04-17
    157

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注