高并发系列之——缓存中间件Redis
1 概念和使用场景
2 基本存储类型
- String
- List
- Set
- SortedSet
- Hash
3 事务
单线程执行,即只能保证一个client发起的事务中的命令可以连续的执行,而中间不会插入其他client的命令。
根据事务的四大特性ACID,只保证了原子性、一致性和隔离性
4 如何实现mybatis的二级缓存
步骤一:新建一个类,用于实现org.apache.ibatis.cache.Cache接口
步骤二:在mapper.xml中开启基于redis二级缓存
<cache type=“com.wooyoo.learning.util.RedisCache”/>
步骤三:sql语句中增加标签如,flushCache=true
4.1 二级缓存目的
取数据时,首先从一级缓存中取,其次葱二级缓存中,如果二级缓存中有数据,则从二级缓存中取,否则查询数据库。
删除、更新、增加数据的时候,同时更新缓存。
4.2 什么数据适合存放到二级缓存中
- 很少被改动;
- 数据不是很重要,容许出现偶尔的并发数据;
- 不会被并发访问;
5 扩展
5.1 缓存穿透
查询缓存中不存在的数据,导致直接查询到数据库。
解决方案:第一次查询不存在的数据时,在缓存中增加一个对应的key为空的数据。
5.2 缓存雪崩
所有缓存在同一时间全部失效,导致了所有请求都直接访问数据库。
解决方案:设置线程互斥,只让一个线程构建缓存,其他等待缓存创建完成后再通过缓存取数据。或,设置交错失效时间
5.3 缓存击穿
缓存雪崩的一个特例,不同的是缓存雪崩针对全部数据,缓存击穿是特定的热点数据。
缓存方案:二级缓存
高并发系列之——缓存中间件Redis的更多相关文章
- 老司机带你玩转面试(1):缓存中间件 Redis 基础知识以及数据持久化
引言 今天周末,我在家坐着掐指一算,马上又要到一年一度的金九银十招聘季了,国内今年上半年受到 YQ 冲击,金三银四泡汤了,这就直接导致很多今年毕业的同学会和明年毕业的同学一起参加今年下半年的秋招,这个 ...
- Java高并发系列——检视阅读
Java高并发系列--检视阅读 参考 java高并发系列 liaoxuefeng Java教程 CompletableFuture AQS原理没讲,需要找资料补充. JUC中常见的集合原来没讲,比如C ...
- java高并发系列 - 第7天:volatile与Java内存模型
public class Demo09 { public static boolean flag = true; public static class T1 extends Thread { pub ...
- Java高并发--CPU多级缓存与Java内存模型
Java高并发--CPU多级缓存与Java内存模型 主要是学习慕课网实战视频<Java并发编程入门与高并发面试>的笔记 CPU多级缓存 为什么需要CPU缓存:CPU的频率太快,以至于主存跟 ...
- java高并发系列-第1天:必须知道的几个概念
java高并发系列-第1天:必须知道的几个概念 同步(Synchronous)和异步(Asynchronous) 同步和异步通常来形容一次方法调用,同步方法调用一旦开始,调用者必须等到方法调用返回后, ...
- java高并发系列 - 第6天:线程的基本操作
新建线程 新建线程很简单.只需要使用new关键字创建一个线程对象,然后调用它的start()启动线程即可. Thread thread1 = new Thread1(); t1.start(); 那么 ...
- java高并发系列 - 第12天JUC:ReentrantLock重入锁
java高并发系列 - 第12天JUC:ReentrantLock重入锁 本篇文章开始将juc中常用的一些类,估计会有十来篇. synchronized的局限性 synchronized是java内置 ...
- java高并发系列 - 第14天:JUC中的LockSupport工具类,必备技能
这是java高并发系列第14篇文章. 本文主要内容: 讲解3种让线程等待和唤醒的方法,每种方法配合具体的示例 介绍LockSupport主要用法 对比3种方式,了解他们之间的区别 LockSuppor ...
- java高并发系列 - 第15天:JUC中的Semaphore,最简单的限流工具类,必备技能
这是java高并发系列第15篇文章 Semaphore(信号量)为多线程协作提供了更为强大的控制方法,前面的文章中我们学了synchronized和重入锁ReentrantLock,这2种锁一次都只能 ...
随机推荐
- Ajax请求参数解释
ajax常用的两个请求是get和post,而springmvc的控制层可以接收ajax请求. 但是这个过程非常灵活,变化很大,容易出错. $.ajax({ url : SITE_PATH + &quo ...
- Java中关键字final用法
///首先声明,本文转载自博客园的海子,链接:http://www.cnblogs.com/dolphin0520/p/3736238.html 浅析Java中的final关键字 谈到final关键字 ...
- 总结day12 ----装饰器
一,什么是装饰器? 装饰器本质上就是一个python函数,他可以让其他函数在不需要做任何代码变动的前提下,增加额外的功能,装饰器的返回值也是一个函数对象. 装饰器的应用场景:比如插入日志,性能测试,事 ...
- 利用Python爬取电影网站
#!/usr/bin/env python #coding = utf-8 ''' 本爬虫是用来爬取6V电影网站上的电影资源的一个小脚本程序,爬取到的电影链接会通过网页的形式显示出来 ''' impo ...
- FPGA实战操作(2) -- PCIe总线(协议简述)
目录 1. PCIe基础知识 2. 事务层协议 2.1 数据包结构 2.2 帧头含义详述 3. 报文举例 3.1 寄存器读报文 3.2 完成报文 4. 机制简述 4.1 Non-Posted和Post ...
- mysql中字符串1.1/1.2/1.2.2/1.2.5排序问题
1.创建查询函数:(split_pid为函数名称) create function split_pid(str varchar (1000),delimiter varchar(1)) returns ...
- hiho#1449 重复旋律6 求长度为k的串最大次数 后缀自动机
题目传送门 题目大意:求长度为k的串的最大次数,把k从1到length的所有答案全部输出. 思路: 这道题放在$SAM$里就是求长度$k$对应的所有$right$集中最大的大小. 我们以$aabab$ ...
- 插播一条 QQ头像无法正常显示问题
问题背景 不知道啥什么,QQ群的头像有些显示不全直接是默认的头像.想一想最近也没做啥,怎么就出问题了. 后来想一想,大概是个人文件夹的文件出问题了 解决办法 好友头像显示问题的删除 MiscHead. ...
- SVN解决冲突的方法
SVN管理代码工具在群组合作开发的过程中,若多人同时修改一个文件,就会出现冲突的情况. 冲突演示: 有A.B两个用户,他们各自从svn服务器中检出了file.txt文件,此时A.B.服务器三个地方的f ...
- Linux快速查看某条命令的版本和存放的位置(ls -l `which mvn`)
输入: ls -l `which mvn` 如图: