TypechoJoeTheme

Clover 的博客

统计
登录
用户名
密码
/
注册
用户名
邮箱

CloverYou

日出于东却落于西,相识人海却散于席。
搜索到 5 篇与 其它 的结果
2022-01-06

缓存数据的一致性

缓存数据的一致性
缓存数据的一致性读所有的数据,首先去缓存中获取,缓存中没有就去读数据库,最后在缓存中放一份。如果该数据在数据库中发生改变,那么缓存里面的数据如何和数据库保持一致?解决这个问题,目前有两个用的非常多的场景:双写模式失效模式双写模式修改数据库的数据后再修改缓存中的数据但又引出了一个问题,那就是当有并发时,线程一将数据库的值改为「一号」然后立刻将这个值保存到缓存,而保存过程中遇到了种种原因,如网络波动,导致了数据延迟抵达缓存服务器,而此时线程二已经将数据库数据改为「二号」然后将数据保存到缓存,线程二网络通畅,很快就抵达缓存服务器先于线程一将数据保存到缓存中,而此时线程一的数据才抵达缓存服务器,将数据「一号」保存到了缓存中(把二号覆盖),这时缓存中保存的就是一个脏数据。这是临时性的脏数据问题,但是在数据稳定、缓存过期后,又能得到最新的正确数据。读到的最新数据有延迟,这就导致了数据的最终一致性问题。失效模式在改完数据库后,将缓存中的数据删除,下一次请求进来从缓存获取数据时发现没有对应数据,他会到数据库中查询并将数据保存在缓存中。失效模式也有数据最终一致性问题,例如有三台服务器同时并发,服务...
CloverYou
2022-01-06

JAVA,其它

78 阅读
1 评论
2022年01月06日
78 阅读
1 评论
2022-01-04

Redis 缓存

Redis 缓存
缓存为了系统性能的提升,一般会将部分数据加入缓存中,加速访问。而 db 承担数据落盘工作。哪些数据适合放入缓存?即时性、数据一致性要求不高的访问量大而且更新频率不高的数据(读多,写少)整合Redis在 SpringBoot 工程中引入 Redis 场景<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>在配置文件中配置 Redis,Redis 的属性配置都在 org.springframework.boot.autoconfigure.data.redis.RedisPropertiesspring: # 配置 redis redis: host: 172.16.34.128使用 StringRedisTemplate 操作 redis@SpringBootTest @Slf4j @Dis...
CloverYou
2022-01-04

其它,JAVA

56 阅读
0 评论
2022年01月04日
56 阅读
0 评论
2022-01-02

Junit5 单元测试 - 学习笔记

Junit5 单元测试 - 学习笔记
在SpringBoot2.2.0+开始引入Junit5 作为单元测试默认库JUnit5 = JUnit Platform + JUnit Jupiter + JUnit VintageJUnit Plaform 是在JVM上启动测试框架的基础,不仅支持Junit自制的测试引擎,其它测试引擎也都可以接入。JUnit Jupiter 提供了JUnit5 的新的编程模型,时JUnit5 新特性的核心。内部包含了一个测试引擎,用于在Junit Platform上运行。JUnit Vintage 为老版本提供了兼容。在创建SpringBoot项目的时候,会自动引入junit 5并帮我们自动配好package com.ctong.learnspringboot; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest class LearnSpringBootApplicationTests { @Test voi...
CloverYou
2022-01-02

其它,JAVA

30 阅读
0 评论
2022年01月02日
30 阅读
0 评论
2022-01-02

MyBatis - 学习笔记

MyBatis - 学习笔记
MyBatis 简介原是Apache的一个开源项目iBatis,2010年6月这个项目由Apache Software Foundation迁移到Google Code,随着开发团队转投Google Code旗下。iBatis3.x正式更名为MyBatis,代码于2013年11月迁移到GithubiBatis一词来源于“internet”和“abatis”的组合。是一个基于Java的持久层框架。iBatis提供的持久层框架包括SQL Maps和Data Access Objects(DAO)MyBatis是支持定制化SQL、存储过程以及高级映射的优秀持久层框架MyBatis避免了几乎所有的JDBC代码的手动设置参数以及获取结果集MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO映射成数据库中的记录GithubHelloWorldMyBatis Demo Github导包<!-- jdbc包 --> mysql-connector-java-8.0.21.jar <!-- mybatis核心包 --> mybati...
CloverYou
2022-01-02

JAVA,其它

35 阅读
0 评论
2022年01月02日
35 阅读
0 评论
2022-01-02

Maven学习笔记

Maven学习笔记
Maven 学习笔记Maven是什么Maven是一款服务于java平台的自动化构建工具。构建概念:以“java源文件”、“框架配置文件”、“JSP”、“HTML”、“图片”等资源为原材料,去“生产”一个可以运行的项目的过程。(构建就是以我们编写的Java代码、框架的配置文件、国际化等其他资源文件、JSP页面和图片等静态资源文件作为“原材料”去“生产”出一个可以运行的项目的过程。)编译部署搭建编译:java源文件 — 编译 —> Class字节码文件,交给JVM去执行部署:一个BS项目最终运行的并不是动态Web工程本身,而是这个动态Web工程编译的结果。(当我们需要通过浏览器访问Java程序时,就必须将包含Java程序的Web工程编译的结果拿到服务器上的指定目录下,并启动服务器,这个“拿”的过程我们就叫部署。)构建过程中的各个环节清理 将以前编译得到的旧的class字节码文件删除,为下一次编译做准备编译 将java源程序编译为class字节码文件测试 自动测试,自动调用junit程序报告 测试程序执行的结果打包 动态web工程大的是war包,java工程打...
CloverYou
2022-01-02

其它,JAVA

35 阅读
0 评论
2022年01月02日
35 阅读
0 评论
CloverYou
日出于东却落于西,相识人海却散于席。
88 文章数
11 评论量
IP信息

人生倒计时

今日已经过去小时
这周已经过去
本月已经过去
今年已经过去个月

最新回复

  1. 缓存一致性 - 点击领取
    2022-01-06
  2. 宝宝
    2022-01-02

标签云