redis更新缓存数据命令_redis缓存数据怎么更新

redis更新缓存数据命令_redis缓存数据怎么更新Redis项目总结缓存更新策略 1.更新策略 | | 内存淘汰 | 超时剔除 | 主动更新 | | : : | : : | : : | : : | | 说明 | 不用自己维护,利用Redis内存淘

redis缓存更新策略【项目总结】

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

1.更新策略

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

正常情况:

img1

异常情况:

img2

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

正常情况:

img3

异常情况:

img4

5.最终方案

综上,一般选用主动更新+超时剔除

  1. 根据id查询店铺时,缓存未命中则查询数据库,将数据库结果写入缓存,并设置超时时间。
  2. 根据id修改店铺时,先修改数据库再修改缓存。

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

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

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

相关推荐

  • 第02期:Prometheus 数据采集(一)

    第02期:Prometheus 数据采集(一)上篇文章(第01期:详解 Prometheus 专栏开篇)介绍了 Prometheus 的架构,本文开始将介绍 Prometheus 数据采集。本文首先会介绍采集数据的格式和分类,然后会给出一些使用…

    2023-03-04
    153
  • SQL 入门教程:创建组合(UNION)查询[亲测有效]

    SQL 入门教程:创建组合(UNION)查询[亲测有效]目录汇总:SQL 入门教程:面向萌新小白的零基础入门教程 可用 UNION 操作符来组合数条 SQL 查询。利用 UNION,可给出多条 SELECT 语句,将它们的结果组合成一个结果集。 一、使用

    2023-04-21
    135
  • Python工程师必备:pipwhl安装教程

    Python工程师必备:pipwhl安装教程Python是一种解释性、面向对象、高级程序设计语言,与其他语言相比,Python几乎可以应用于任何领域,其强大的生态系统也为Python的发展提供了强大的动力。尤其是在机器学习、Web应用程序、游戏开发、科学计算和数据分析等领域,Python表现出了极高的可靠性和高效性。

    2024-06-06
    45
  • 遇见SQL(1)「建议收藏」

    遇见SQL(1)「建议收藏」SQL自学笔记 SQL的自我介绍 SQL分类的画图演示 DDL 操作数据库 1.0 查询和创建 2.0 修改、删除、使用 操作表 1.0 查询 e 2.创建 3.删除 4.修改 DML 1.0 添加数

    2023-03-19
    162
  • Redis 集群演进探讨和总结「建议收藏」

    Redis 集群演进探讨和总结「建议收藏」Redis为什么需要集群? 首先Redis单实例主要有单点,容量有限,流量压力上限的问题。 Redis单点故障,可以通过主从复制 ,和自动故障转移 哨兵机制。 但Redis单 实例提供读写服务,仍然有

    2023-03-03
    145
  • 使用pandas_datareader在Python中获取金融数据

    使用pandas_datareader在Python中获取金融数据金融数据在今天的商业世界中至关重要。从个人金融投资到公司财务管理,都需要大量的数据来支持决策。Python的pandas和pandas_datareader可以将这些数据获取和处理变得更加简便。

    2024-05-29
    60
  • Python中的String isnumeric方法的使用

    Python中的String isnumeric方法的使用Python中的字符串提供了很多内置方法,其中一个方法叫做isnumeric,它可以用于判断字符串是否只由数字字符组成。

    2024-03-26
    74
  • 【StoneDB技术解析】验证相关数据包是否需要解压缩「终于解决」

    【StoneDB技术解析】验证相关数据包是否需要解压缩「终于解决」在StoneDB中,数据包分为以下几类: 不相关的数据包:不满足查询条件的数据包。 相关的数据包:满足查询条件的数据包。 可疑的数据包:数据包中的数据部分满足查询条件,需要进一步解压缩数据包才能得到满

    2023-05-31
    153

发表回复

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