iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >redis中 数据一致性的方案
  • 360
分享到

redis中 数据一致性的方案

2024-04-02 19:04:59 360人浏览 八月长安
摘要

背景:现在Redis在互联中有大量的使用,根据业务的不同,其使用上也有所不同,但一般都有数据存储和缓存的一致性问题,下面就给大家介绍几个比较成熟实用的方案,希望对大家有帮助,如果大家有好的方案和建议欢迎给我

背景:
现在Redis在互联中有大量的使用,根据业务的不同,其使用上也有所不同,但一般都有数据存储和缓存的一致性问题,下面就给大家介绍几个比较成熟实用的方案,希望对大家有帮助,如果大家有好的方案和建议欢迎给我留言

方式1:
数据库保存数据,redis不persist redis启动后,从数据库加载数据 不要求强一致实时性的读请求,都由redis处理 要求强一致实时性的读请求,由数据库处理 写请求有2种处理方式,由数据库处理

应用先写道数据库,然后更新redis
应用先写道数据库,然后其它daemon同步到redis 优点:redis启动不用处理redis数据和数据库不一致 缺点:redis启动给数据库很大的读压力

方式2:
数据库和redis分别处理不同的数据类型 数据库处理要求强一致实时性的数据,例如金融数据、交易数据 Redis处理不要求强一致实时性的数据,例如网站最热贴排行榜

redis和Mysql数据的同步,代码级别大致可以这样做: 读: 读redis->没有,读mysql->把mysql数据写回redis 写: 写mysql->成功,写redis

并发不高的情况: 读: 读redis->没有,读mysql->把mysql数据写回redis,有的话直接从redis中取; 写: 写mysql->成功,再写redis;

并发高的情况: 读: 读redis->没有,读mysql->把mysql数据写回redis,有的话直接从redis中取; 写:异步话,先写入redis的缓存,就直接返回;定期或特定动作将数据保存到mysql,可以做到多次更新,一次保存;

--备注:如果写redis要使用redis的事务
127.0.0.1:6379> WATCH id
OK
127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> INCR id
QUEUED
127.0.0.1:6379> EXEC
1) (integer) 342183
127.0.0.1:6379>

方式3:
使用lua脚本:redis在使用lua使用同时只允许一个脚本执行,符合事务的原子性,但一个lua脚本不能执行时间过大,不然会阻塞

EVAL
EVAL命令对 Lua 脚本进行执行求值。

语法:EVAL script numkeys key [key …] arg [arg …]

script lua脚本内容 注意的是脚本不应该是Lua函数。
numkeys 表示指定键名参数的个数。
key [key ...] 表示脚本对应的key值列表 在脚本中可以使用KEYS[1] KEYS[2] KEYS[3]KEYS[n] n从1开始 。
arg [arg ...] 命名行中传递的参数列表 在脚本中可以使用ARGV[1] ARGV[2] ARGV[3]ARGV[n] n从1开始 。

一个示例胜过千言万语的解释

eval "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 id name 3 mytest
执行上面脚本返回

1) "id"
2) "name"

3) "2"

4) "mytest"

您可能感兴趣的文档:

--结束END--

本文标题: redis中 数据一致性的方案

本文链接: https://www.lsjlt.com/news/39949.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Mysql和Redis数据一致性
    什么是数据库与缓存一致性 数据一致性指的是:缓存的数据值 = 数据库中的值 为什么会出现数据一致性问题呢? 在高并发的业务场景下,数据库大多数情况都是用户并发访问最薄弱的环节。所以,就需要使用red...
    99+
    2023-09-07
    redis mysql 数据库 java 缓存
  • Redis缓存和MySQL数据一致性的方法
    这篇“Redis缓存和MySQL数据一致性的方法”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这...
    99+
    2024-04-02
  • MySQL和Redis的数据一致性问题
    目录一、一致性问题二、方案选择1、是删除缓存还是更新缓存?2、先更新数据库,再删除缓存3、失败重试4、异步更新缓存5、、先删除缓存,再更新数据库前言: 在数据读多写少的情况下作为缓存...
    99+
    2024-04-02
  • redis数据一致性的实现示例
    前言 所谓的redis数据一致性即当进行修改或者保存、删除之后,redis中的数据也应该进行相应变化,不然用户再次查询的时候很可能查询出已经删除过的脏数据。 一、缓存一致的必要性 还...
    99+
    2024-04-02
  • 【4种方案】如何保证Redis与数据库的数据一致!
    如何保证Redis与数据库的数据一致 ONE 案例 先删除“缓存”再去更新“数据库”。但是该方案还存在问题:         在高并发情况下,第一个线程删除缓存,还没来得及去操作数据库,这时第二个线程访问缓存,发现为null,于是去数据库查...
    99+
    2023-09-08
    数据库 缓存 redis java
  • 如何实现redis数据一致性
    小编给大家分享一下如何实现redis数据一致性,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、缓存一致的必要性还是接上篇来说,我们已经解决了redis缓存穿透的...
    99+
    2023-06-29
  • redis如何保证数据一致性
    Redis 保证数据一致性的方法主要有以下几种: 主从复制:Redis 支持主从复制机制,通过将主节点的数据复制到备用的从节点上...
    99+
    2024-05-10
    redis
  • redis怎么解决数据一致性
    redis 提供了两种一致性模型,以维护副本数据一致性:强一致性 (sync) 确保写操作仅在复制到所有从节点后才完成;最终一致性 (async) 则在主节点上写操作后认为已完成,牺牲一...
    99+
    2024-04-08
    redis
  • Java业务中台确保数据一致性的解决方案
    目录引言数据一致性原理预备知识1、本地事务2、分布式事务(1)一个事务中包含了多数据库操作(2)一个事务中包含了多服务访问同一数据库(3)一个事务包含了多个微服务调用数据不一致引发的...
    99+
    2024-04-02
  • redis怎样保持和数据库数据的一致性
    redis 与数据库数据一致性维护可以通过以下方式实现:定期数据同步使用 redis 发布/订阅机制使用 redis 事务使用 redis 持久化使用 redis sentinel 或 ...
    99+
    2024-04-19
    mysql redis 数据丢失 持久化存储
  • redis数据库一致性问题解决
    redis数据库通过以下机制解决数据一致性问题:主从复制:主服务器将写操作同步复制到从服务器。redis sentinel:监控redis服务器并执行故障转移和故障恢复,保持数据库可用性...
    99+
    2024-04-19
    redis
  • redis怎么保证和数据库数据一致性
    Redis是一个内存数据库,通常用作缓存。相比于传统的磁盘数据库,Redis在性能上具有优势,但它也有可能在某些情况下出现数据不一致...
    99+
    2024-02-29
    redis 数据库
  • redis如何保证和数据库的一致性
    为了确保 redis 与数据库之间的数据一致性,可使用以下方法:事务性更新:将 redis 和数据库更新封装成原子事务,避免不一致。乐观锁:监视要更新的键,更新前检查键是否已修改,避免并...
    99+
    2024-04-20
    redis
  • Redis 和 MySQL 如何保持数据一致性?
    在高并发的场景下,大量的请求直接访问MySQL很容易造成性能问题。所以,我们都会用Redis来做数据的缓存,削减对数据库的请求。但是,MySQL和Redis是两种不同的数据库,如何保证不同数据库之间数据的一致性就非常关键了。 一、导致...
    99+
    2023-09-16
    mysql redis
  • redis和mysql数据一致性怎么保证
    为了确保 redis 和 mysql 之间的数据一致性,可以采用以下策略:1. 主从复制:利用 mysql 的复制功能,将 mysql 作为主数据库,并将数据同步到 redis 作为从数...
    99+
    2024-04-08
    mysql redis
  • MySQL和Redis如何保证数据一致性
    MySQL与Redis都是常用的数据存储和缓存系统。为了提高应用程序的性能和可伸缩性,很多应用程序将MySQL和Redis一起使用,其中MySQL作为主要的持久存储,而Redis作为主要的缓存。在这种情况下,应用程序需要确保MySQL和Re...
    99+
    2023-08-22
    mysql redis 数据库
  • Redis与MySQL数据一致性问题解析
    引言 在现代的应用程序开发中,数据一致性是一个非常重要的问题。对于使用MySQL作为主要数据库的应用程序而言,保持与Redis缓存之间的数据一致性尤为关键。Redis作为一种高性能的内存数据库,常用于缓存和提高应用程序的读取性能。然而,由于...
    99+
    2023-09-01
    redis mysql 数据库
  • redis怎么和数据库保持一致性
    在实际应用中,Redis通常作为数据库的缓存层来提高访问速度,而不是直接用来和数据库保持一致性。但是如果确实需要保持Redis和数据...
    99+
    2024-04-03
    redis 数据库
  • redis和数据库如何保证一致性
    redis 与数据库之间的数据一致性可以通过以下机制实现:1. 主从复制机制,通过异步复制实现一致性;2. 双写机制,同时向 redis 和数据库写入数据保持同步;3. 乐观锁,通过版本...
    99+
    2024-04-20
    redis 并发访问
  • 浅谈数据库缓存最终一致性的四种方案
    背景 缓存是软件开发中一个非常有用的概念,数据库缓存更是在项目中必然会遇到的场景。而缓存一致性的保证,更是在面试中被反复问到,这里进行一下总结,针对不同的要求,选择恰到好处的一致性方...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作