字节面试官最喜欢问的Redis知识

点赞收藏,以防遗忘 本文【程序大视界】已收录,关注免费领取互联网大厂学习资料,添加博主好友进群学习交流,欢迎留言和评论,一起交流共同进步。 目录 【一】前言 【二】Redis常用的几种基本数据类型 1、String 字符串 2、链表List 4、集合set 5、sorted set 集合 【三】Redis的高可用 3.1 Sentinel哨兵 3.2 选举领头Sentinel 【四】 Redis持久化 4.1 RDB持久化 4.2 AOF持久化 4.3 AOF持久化的实现 【五】生存时间或过期时间...

浅学一下Redis

发布时间:2022-11-27 缓存 REDIS 技术专栏 数据库
NoSQL概述 NoSQL特点 1、方便拓展(数据之间没有关系) 2、大数据量高性能(Redis一秒可以读11万次,写8万次) 3、数据类型多样性(不需要事先设计数据库,随取随用) NoSQL四大分类 Key:Value Redis memecache 文档 MongoDB:MongoDB是关系型数据库和非关系型数据库的中间产品,MongoDB是非关系型数据库中功能最丰富,最像关系型数据库的 ConthDB 列存储数据库 HBase 图关系型数据库 不是存储图片的数据库,存储的是关系 Neo4j,Info...

程序员必看内容连续集之 SpringBoot05 整合Druid&Redis

发布时间:2022-11-25 缓存 性能优化 数据库 REDIS SPRING BOOT
目录 一、整合Druid 二、集成redis之非注解式开发 三、集成redis之注解式开发 一、整合Druid 1、Druid简介: Druid是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0、DBCP、Proxool等DB池的优点,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况,可以说是针对监控而生的DB连接池,可以说是目前最好的连接池之一。 2、Druid的优点 ①结合了C3P0、DBCP、Proxool等DB池的优点; ②速度快,且稳定性好; ③可以很好的监控DB池连接和S...

【Redis】11.缓存同步

发布时间:2022-11-29 缓存 REDIS # REDIS 数据库
1. 数据同步策略 想要实现MySQL与Redis数据同步,常见的方式有以下三种: 设置有效期:给缓存设置有效期,到期后自动删除缓存,使得下次查询缓存不命中,查数据库进而更新缓存 优点:简单、方便缺点:时效性低,缓存未过期之前可能会导致数据库数据和缓存数据不一致场景:更新频率较低,时效性要求低的业务 同步双写:在修改数据库的同时,直接修改缓存 优点:时效性强,缓存与数据库强一致缺点:有代码侵入,耦合度高;场景:对一致性、时效性要求较高的缓存数据 **异步通知:**修改数据库时发送事件通知,相关...

Redis key分布

发布时间:2022-11-30 缓存 REDIS DB 数据库
当redis内存过大时,如果查看key占用内存情况?如果确定哪些key好久没有被访问? 工作中遇到Redis内存占用90%,如果解决? 1.出现问题 2.下载内存监控工具RDR linux下载链接:https://github.com/xueqiu/rdr/releases/download/v0.0.1/rdr-linux windows下载链接:https://github.com/xueqiu/rdr/releases/download/v0.0.1/rdr-windows.exe  3.RDB...

Redis第二章_实战篇_短信登录+缓存策略+秒杀+分布式锁>>

Redis第二章_实战篇_短信登录+缓存策略+秒杀+分布式锁>> 开篇导读 亲爱的小伙伴们大家好,马上咱们就开始实战篇的内容了,相信通过本章的学习,小伙伴们就能理解各种redis的使用啦,接下来咱们来一起看看实战篇我们要学习一些什么样的内容 短信登录 这一块我们会使用redis共享session来实现 商户查询缓存 通过本章节,我们会理解缓存击穿,缓存穿透,缓存雪崩等问题,让小伙伴的对于这些概念的理解不仅仅是停留在概念上,更是能在代码中看到对应的内容 优惠卷秒杀 通过本章节,我们可以学会R...

【计算机组成原理】Cache和主存的映射方式

发布时间:2022-11-27 缓存 经验分享 程序人生
Cache和主存的关系 Cache行中的信息是主存中某个块的副本,将内存以块为单位调入Cache供快速访问。内存的数据将被调入到Cache行的数据块中,Cache用于缓和主存和CPU之间的速度矛盾。 直接映射 主存中每一块在Cache中有唯一Cache行与之对应。若调入内存块时该Cache行已有内容将会产生冲突。直接映射方式发生冲突概率最高。直接映射的关系定义为Cache行号 = 主存块号 % Cache总行数 若Cache有 2...

SpringBoot+Caffeine+Redis声明式缓存

发布时间:2022-11-25 笔记整理 REDIS SPRING BOOT 缓存
目录 【博客目的】 【应用场景】 【相关知识】 【代码实践】 引入组件 配置文件 配置类 启动类 业务层 实体类 接口层 【博客目的】 记录一个项目中同时整合了Caffeine和Redis时,怎么使用@Cacheable这样的注解,优雅地实现缓存。 【应用场景】 最近接到一个项目,里面同时整合了Caffeine和Redis。 对于像验证码,或者对用户操作做一些限制的缓存,还有分布式锁等等操作就利用redis来缓存, 对于一些热点数据,为了降低数据库查询频率,就使用Caffeine本地缓存来实现。 至于为什...

【数据结构初阶】复杂链表复制+带头双向循环链表+缓存级知识

发布时间:2022-11-30 链表 数据结构 数据结构初阶 缓存
我父亲曾将我高举过头顶,所以到哪我都不会觉得自己低人一等。 加油!少年! 我们下面的讲解顺序是先给大家将最后一道链表题,本题难度较大,所以在大家还没看困的基础下,我们先讲解一下这道题目。然后博主在详细得用图文方式给大家讲一下链表的另一经典结构:带头双向循环链表。最后我们利用一小段时间再给大家补充一下缓存级部分的知识,由于偏硬件,仅供了解即可。 OK,前言完毕,开始学习的脚步吧!!! 一、复杂链表复制 首先这道题我们应该如何去做呢? 我们从题中可以看出,其实有些问题我们是很好解决的,比如我开辟个...

解决缓存一致性问题

发布时间:2022-11-29 缓存 数据库 分布式 REDIS 缓存一致性 JAVA
如何解决缓存一致性问题 引入缓存,我们的很大原因是为了让经常访问而不常修改的数据快速响应,提高系统性能。除此之外还有一些对及时性、数据一致性不高的场景。 使用缓存我们还有一个问题就是,缓存的数据一致性问题,即保证数据库的数据与我们缓存的数据一致,如何解决,我们常用的解决方式有以下两种。 1.双写模式 双写就是,写入数据库的时候,也更新缓存中的数据。如果细分析下来这两个步骤不同顺序执行也会不同效果。 数据一致性考虑主要两点:在不考虑并发问情况的异常问题,在并发情况下的不安全问题。 不考虑并发问情况出现异常 ...

Redis 入门基础(一)

发布时间:2022-11-24 缓存 REDIS 数据库
Redis 入门基础 概览:本章节为 Redis 概述、单节点部署笔记 一、概述 Redis 是什么? Redis(Remote Dictionary Server ),即远程字典服务,是一个免费的、开源的、高性能的key-value数据库,通常被称为数据结构服务器 Redis 能干什么 高可用高速缓存数据持久化存储(RDB 与 AOF) Redis 特性 集群(主从、哨兵、cluster)多语言、多数据类型高可用、数据持久化存储 参考资料 Redis官方网站 Redis官网手...

使用我们的spring-cache 整合我们的Redis对我们的数据进行缓存

发布时间:2022-11-27 缓存 REDIS SPRING
①、什么是spring-cache: Spring Cache 是Spring 提供的一整套的缓存解决方案,它不是具体的缓存实现,它只提供一整套的接口和代码规范、配置、注解等,用于整合各种缓存方案,比如Redis、Caffeine、Guava Cache、Ehcache。使用注解方式替代原有硬编码方式缓存,语法更加简单优雅! ** ***附:我们的实体类一定要实现Serialable接口,不然肯定会报错 org.springframework.expression.spel.SpelEvaluationE...

使用workerman/redis-queue做队列(订阅)

发布时间:2022-11-29 缓存 REDIS WORKERMAN 数据库
前言 手上有一个短信群发通知功能,考虑到日后单个时间通知的手机号会有点多,故打算用workerman里的redis队列功能来实现(thinkphp6框架下)。 部署 1. 本地安装redis服务(如在本地调试的话),并在.env写入配置文件 [REDIS]#AUTH为密码,本地为空AUTH=HOST=127.0.0.1PORT=6379 2. compser安装workerman/redis-queue composer require workerman/redis-queue:1.0.10 3. 使...

Bigkey问题的解决思路与方式探索

发布时间:2022-11-23 缓存 技术干货 数据库 REDIS
作者:vivo 互联网数据库团队- Du Ting 在Redis运维过程中,由于Bigkey 的存在,会影响业务程序的响应速度,严重的还会造成可用性损失,DBA也一直和业务开发方强调 Bigkey 的规避方法以及危害。 一、背景 在Redis运维过程中,由于Bigkey的存在,会影响业务程序的响应速度,严重的还会造成可用性损失,DBA也一直和业务开发方强调 Bigkey 的规避方法以及危害,但是Bigkey一直没有完全避免。全网Redis集群有2200个以上,实例数量达到4.5万以上,在当前阶段进行...

【SpringBoot】SpringBoot开启MyBatis缓存+ehcache(第三方缓存因框架不同jar包不一样)

发布时间:2022-11-24 MYBATIS SPRINGBOOT SPRING BOOT 缓存
第三方缓存 基于springboot的第三方缓存设置 1、导jar包 引入缓存的依赖包,在配置 pom.xml 文件中添加 <!--添加缓存--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId></dependency><dependency...

存储模块 --- Cache

发布时间:2022-11-23 缓存 嵌入式LINUX 开发语言 JAVA 操作系统
Cache 高速缓冲存储器 内存一般采用SDRAM芯片,对内存的访问肯定是不及CPU的速度的,通常说内存访问要比CPU的速度慢的多。也就是说内存拖后腿了。 CPU访问内存并不是完全随机的。 在某个时间段内,CPU总是访问当前内存地址的相邻内存地址, 想象一下指令顺序执行和循环执行的情景, 这种情景就是著名的程序局部性原理。 基于程序局部性原理,CPU和内存之间可以放置一个小而快的中间存储器,它的速度和CPU的速度差不多,事实上要慢一丢丢,但比内存快得多,这就是高速缓冲存储器。 高速缓冲存储器可以是统...

强缓存和协商缓存

发布时间:2022-11-23 缓存 网络 服务器 前端 WEB
流程 强缓存不经过服务器,协商缓存需要经过服务器。协商缓存返回的状态码是304,两类缓存机制可以同时存在,强缓存的优先级高于协商缓存。当执行强缓存时,如果缓存命中,则直接使用缓存数据中的数据,不再进行协商缓存。当强缓存没有命中的时候,浏览器一定会发送一个请求到服务器,通过服务器端依据资源的另外一些http header 验证这个资源是否命中协商缓存。如果协商缓存命中,服务器会将这个请求返回,但是不会返回这个资源的数据,而是告诉客户端可以直接从缓存中加载这个资源,于是浏览器就又会从自己的缓存中去加载这个资...

【算法】买卖股票的最佳时机,LRU 缓存机制,删除排序链表中的重复元素三道算法题

发布时间:2022-11-23 链表 算法 缓存
点进来的朋友们需要您的3连支持ing 买卖股票的最佳时机 题目描述 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。 示例 1: 输入:[7,1,5,3,6,4] 输出:5 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票...

实战讲解MyBatis缓存:一级缓存和二级缓存(图+文+源码)

1 缘起 回顾SpringBoot如何进行事务管理相关知识的时, 发现使用Spring的注解@Transational即可实现事务管理,完成回滚操作, 然而SpringBoot中使用MyBatis这个ORM框架操作数据库,实现CURD, 这两者有什么关系呢? 研究一番之后,发现,@Transactional注解于MyBatis是有关联的, 并且不单单对事务起作用,同样对MyBatis一级缓存起作用, 于是,开始研究MyBatis的缓存,分享如在, 帮助读者轻松应对知识考核与交流。 2 MyBatis缓存 ...

Redis 入门基础(二)

发布时间:2022-11-24 缓存 REDIS 数据库
书接上文:Redis 入门基础(一) 概览:本章节为 Redis 五大数据类型的使用方法笔记 三、基础知识 Redis 数据库 Redis数据库有16个 # 连接redis服务[root@localhost ~]# redis-cli -p 6379127.0.0.1:6379 > pingPONG127.0.0.1:6379 > SELECT 3 // 切换到3号数据库OK127.0.0.1:6379 > DBSIZE // 查看数据库大小(i...

http缓存

发布时间:2022-11-24 缓存 前端
目录 http缓存——强缓存 1、Expires 2、Cache-control http缓存——协商缓存 1、Last-Modified/If-Modified-Since 2、ETag/If-Not-Match http缓存——前端的方法 用户控制不缓存的方法 缓存一般分为浏览器缓存(前端)和http缓存(后端)。当然前端也可以http缓存,后面会写,只不过一般还是后端使用http缓存 浏览器缓存(本地存储):localStorage、sessionStorage、cookie等 一...

Redis数据类型之set

发布时间:2022-11-23 缓存 REDIS 数据库
提示:以下是本篇文章正文内容,Redis系列学习将会持续更新 set ● 数据存储需求:存储大量的数据,在查询方面提供更高的效率。 ● 需要的存储结构:能够保存大量的数据,高效的内部存储机制,便于查询。 ● set类型:与hash存储结构完全相同,仅存储键,不存储值(nil),并且值是不允许重复的。 Ⅰ. 基础操作 ● 添加数据 sadd key member1 [member2] ● 获取全部数据 smembers key ● 删除数据 srem key member1 [member2]...

使用Redis给博客添加缓存

发布时间:2022-11-29 缓存 REDIS JAVA
作者:ChenZhen 博客地址:https://www.chenzhen.space/ 版权:本文为博主 ChenZhen 的原创文章,本文版权归作者所有,转载请附上原文出处链接及本声明。 如果对你有帮助,请给一个小小的star⭐ 首先我们先配置好springboot和Redis的环境确保连接上Redis,并且开启了基于注解的缓存。 参考我的文章:Redis整合springboot,使用RedisTemplate操作Redis 然后我们开始添加缓存,首先思考需要添加缓存在哪些地方。 我首先...

《Redis设计与实现》笔记

发布时间:2022-12-02 缓存 REDIS 数据库
第二章:简单动态字符串         1.Redis没有直接使用C语言传统的字符串表示(以空字符结尾的字符数组,以下简称C字符串),而是自己构建了一种名为简单动态字符串( simple dynamic string,SDS)的抽象类型,并将SDS用作 Redis的默认字符串表示。         Redis里面,C字符串只会作为字符串字面量( string literal)用在一些无须对字符串值进行修改的地方,比如打印日志:         redislog (REDIS_WARNING,Redis i...

主机连接由虚拟机Linux搭建的redis,一步到胃,直接把坑踩完~

发布时间:2022-11-23 缓存 LINUX 数据库 编程经验 REDIS JAVA
前言 最近准备学习一下Redis来做缓存,在选择Redis环境上又犹豫了很久。 有人推荐购买阿里云的Redis服务器,但是蚊子腿也是肉啊,而且便宜也只是针对新手罢了。 作为白嫖党,学习阶段一分钱也别想让我掏出来。 发现windows并不能很好的运行Redis,虽然也提出了一种解决方案(即WSL),但是WSL总的来说,还不成熟,1.0版本发布还没几天(我写这篇文章的时候),并且它不能兼容所有Linux程序。 因此决定使用虚拟机Ubuntu来完成Redis的环境搭建。 步骤说明 1.下载Ubuntu的镜像文件...

Redis 通用命令(keys,help,mset,exists,expire,ttl,tab补全)

发布时间:2022-11-24 缓存 REDIS 数据库
目录 1.help【command】 2.tab自动补全  3. KEYS pattern(模板)(不建议再生产环境上使用) 4.del 删除指定的key,value也会删除(也可以批量删除) 5.MSET(批量插入键值对) 6.EXISTS(判断key是否存在,存在则就显示个数,否则就为0) ​7.EXPIRE(给一个key设置一个有效期限,到期key会自动删除)  8.TTL(“time to life”查看一个key的剩余有效期)与EXPIRE配合使用 通用指令是部分数据的,都可以使用的指令,常见...

一级缓存二级缓存的获取与更新顺序(一)

对于缓存,搞开发的小伙伴们经常用到,当我们需要查询缓存过的数据时,查询的顺序:一级缓存(也称本地缓存)如果查询到直接返回,查询不到接着查询二级缓存-->二级缓存(redis缓存)如果查询到数据则更新一级缓存后并返回数据,如果查询不到则查询数据库-->查询数据库,如果查询到数据则更新一级缓存,再更新二级缓存,然后返回数据--->如果一二级缓存都没有查询到我们需要的数据;  下面我们代码实操下编写的一级缓存组件:  下面我来看二级缓存的关键代码(这些代码可以更加实际的业务逻辑进行封装)...

Redis中的String类型与List类型个人理解

发布时间:2022-11-23 缓存 REDIS 数据库
String类型           String类型是Redis的最基础类型,最大能存储512MB,其中存储值可以是最简单的字符串、复杂的 xml/json的字符串、二进制图像或者音频的字符串、以及是数字的字符串。 ## String数据类型与结构  基本操作       set 命令操作              - set key value [ex | px | nx | xx]               - ex:设置key过期时间为 N 秒              - px:设置key过...

高并发场景下缓存处理思路总结

发布时间:2022-11-23 缓存 工作总结 性能优化 数据库 REDIS JAVA
高并发场景下缓存处理思路总结 应用背景 在实际的开发当中,我们经常需要进行磁盘数据的读取和搜索,因此经常会有出现从数据库读取数据的场景出现。但是当数据访问量次数增大的时候,过多的磁盘读取可能会最终成为整个系统的性能瓶颈,甚至是压垮整个数据库,导致系统卡死等严重问题。 常规的应用系统中,我们通常会在需要的时候对数据库进行查找,因此系统的大致结构如下所示: 当数据量较高的时候,需要减少对于数据库里面的磁盘读写操作,因此通常都会选择在业务系统和MySQL数据库之间加入一层缓存从而减少对数据库方面的访问...

Redis数据类型之sorted_set

发布时间:2022-11-23 缓存 REDIS 数据库
提示:以下是本篇文章正文内容,Redis系列学习将会持续更新 sorted_set ● 数据存储需求:数据排序有利于数据的有效展示,需要提供一种可以根据自身特征进行排序的方式。 ● 需要的存储结构:新的存储模型,可以保存可排序的数据。 ● sorted_set类型:在set的存储结构基础上添加可排序字段。 Ⅰ. 基础操作 ● 添加数据 zadd key score1 member1 [score2 member2] ● 获取全部数据 # 正序zrange key start stop [WI...

Redis 深度历险:核心原理与应用实践

发布时间:2022-11-24 缓存 REDIS 课程推荐 数据库
小册介绍 Redis 是互联网技术架构在存储系统中使用最为广泛的中间件,它也是中高级后端工程师技术面试中面试官最喜欢问的工程技能之一,特别是那些优秀的、竞争激烈的大型互联网公司(比如 Twitter、新浪微博、阿里云、腾讯云、淘宝、知乎等),通常要求面试者不仅仅掌握 Redis 基础使用,更要求深层理解 Redis 内部实现的细节原理。毫不夸张地说,能把 Redis 的知识点全部吃透,你的半只脚就已经踏进心仪大公司的技术研发部。 但在平时经历的很多面试中,老钱发现大多数同学只会拿 Redis 做数据缓存...

Redis常用指令汇总

发布时间:2022-11-24 缓存 REDIS 数据库
提示:以下是本篇文章正文内容,Redis系列学习将会持续更新 一、5种数据类型 Redis 数据存储格式:  ● redis 自身是一个 Map ,其中所有的数据都是采用 key : value 的形式存储。  ● 数据类型指的是存储的数据的类型,也就是 value 部分的类型,key 部分永远都是String类型的。 Redis的数据类型类似于Java中的数据结构stringStringhashHashMaplistLinkedListsetHashSetsorted_setTreeSet二、...

Redis-企业级解决方案

发布时间:2022-11-24 缓存 REDIS 数据库
目录 缓存预热 缓存雪崩 缓存击穿 缓存穿透 性能指标监控 缓存预热 场景:“宕机”服务器启动后迅速宕机问题排查:1.请求数量较高,大量的请求过来之后都需要去从缓存中获取数据,但是缓存中又没有此时从数据库中查找数据然后将数据再存入缓存,造成了短期内对redis的高强度操作从而导致问题2.主从之间数据吞吐量较大,数据同步操作频度较高解决方案: 前置准备工作: 1.日常例行统计数据访问记录,统计访问频度较高的热点数据2.利用LRU数据删除策略,构建数据留存队列 例如:storm与k...

缓存与数据库一致性问题

发布时间:2022-11-23 缓存 数据库/缓存 数据库
数据库和缓存的数据不一致问题,大都是产生在更新数据时。在更新的时候,操作缓存和数据库无疑就是以下四种可能之一: 先更新缓存,再更新数据库;先更新数据库,再更新缓存;先删除缓存,再更新数据库;先更新数据库,再删除缓存;一、先更新缓存,再更新数据库 成功更新了缓存,但是在执行更新数据库的那一步,服务器突然宕机了,那么此时,我的缓存中是最新的数据,而数据库中是旧的数据。 并发问题: 二、先更新数据库,再更新缓存 成功更新了数据库,但是在执行更新缓存的那一步,服务器突然宕机了,此时缓存中的数据是旧值,只有当键过...

【异常】com.alicp.jetcache.CacheException: refresh error

发布时间:2022-11-23 缓存 异常解决方案 JETCACHE 开发语言 JAVA
一、背景描述 技术栈:Spring Boot(2.1.5.RELEASE) + Spring Cloud Oopenfeign(2.1.1.RELEASE) + jetCache(2.5.14) + redis(3.1.0) 由于项目使用了微服务架构,各个服务职责不同,又相互引用,所以就经常在服务A中调用服务B的接口,我们使用的是Feign客户端,即 FeignClient。通过接口调用返回的数据,在服务A中先进行了缓存(使用了JetCache),减少对服务B的频繁调用,减轻服务B的压力。 由于...

Java缓存池

发布时间:2022-11-23 缓存 JAVA 开发语言 JAVA学习与进阶
new Integer() 每次都会新建一个对象Integer.valueOf() 会使用缓存池中的对象,多次调用会取得同一个对象的引用 Integer x = new Integer(1);Integer y = new Integer(1);System.out.println(x == y);Integer z = Integer.valueOf(1);Integer k = Integer.valueOf(1);System.out.println(z == k); valueof的实现很简单,判...

Redis 基础

发布时间:2022-11-30 缓存 REDIS 数据库
单介绍一下 Redis! 简单来说 Redis 就是一个使用 C 语言开发的数据库,不过与传统数据库不同的是 Redis 的数据是存在内存中的 ,也就是它是内存数据库,所以读写速度非常快,因此 Redis 被广泛应用于缓存方向。 另外,Redis 除了做缓存之外,也经常用来做分布式锁,甚至是消息队列。 Redis 提供了多种数据类型来支持不同的业务场景。Redis 还支持事务 、持久化、Lua 脚本、多种集群方案。 你可以自己本机安装 Redis 或者通过 Redis 官网提供的在线 Redis 环境来实...

如何设计一个优雅的缓存工具类?

前言 缓存是计算机系统中必不可少的一种解决性能问题的方法,常见的应用包括CPU缓存、操作系统缓存、本地缓存、分布式缓存、HTTP缓存、数据库缓存等。其核心就是用空间换时间,通过分配一块高速存储区域(一般来说是内存)来提高数据的读写效率,实现的难点就在于清空策略的实现,比较合理的思路就是定时回收与即时判断数据是否过期相结合。 常规一级缓存(基于Redis) @Slf4jpublic class CacheProcessor { // 注入RedisCache 【作为二级缓存】 @Resou...

【Redis】key命名规范

发布时间:2022-11-24 缓存 REDIS 数据库
问题: Redis 中没有 MySQL 中 Table 的概念,我们应该如何区分不同类型的 key ? 答: Redis 中的 key 容许多个单词形成层级结构,多个单词间使用 ‘ :’ 隔开,一种格式类型如下: 项目名: 业务名: 类型 : id 比如,我这里有一个商城项目,我的业务名叫 mall ,我具有 coupon 优惠卷 和 product 商品 这两种不同类型的数据,那么 插入数据的 key 可以定义为: 优惠券相关: mall : coupon : 1商品相关:mall : produc...

ThingsBoard源码解析-缓存

发布时间:2022-11-25 缓存 JAVA REDIS THINGSBOARD
配置 TB支持两种缓存:Caffeine和Redis,通过配置cache.type来指定使用哪种缓存。 位于 org.thingsboard.server.cache Caffeine 配置类:CaffeineCacheConfiguration @Configuration@ConditionalOnProperty(prefix = cache, value = type, havingValue = caffeine, matchIfMissing = true)@ConfigurationPro...

Redis第一篇之基础入门,可以快速上手进行一些基础的操作

发布时间:2022-11-24 缓存 REDIS JAVA 数据库
在看redis之前,先来了解一下NoSQL(非关系型数据库) 1. NoSQL数据库简介 1.1 概述 NoSQL(Not Only SQL),意为不仅仅是SQL,泛指非关系型数据库.NoSQL不依赖业务逻辑方式存储,而以简单的key-value模式存储,因此大大增加了数据库的扩展能力,有以下的特点: 不遵循SQL标准不支持ACID远超于SQL的性能 1.2 NoSQL的适应性场景: 对数据高并发的读写海量数据的读写对数据高扩展性的 1.3 NoSQL不适应的场景: 需要事务的支持基于sql的结构化查...

缓存经典问题:缓存穿透和缓存雪崩

发布时间:2022-11-23 缓存 穿透 架构 雪崩 《分布式专栏》
目录 【一】缓存 【二】缓存穿透 【三】缓存雪崩 【四】缓存热点 【一】缓存 在某些复杂的业务场景下,单纯依靠存储系统的性能提升不够的,典型的场景如下。 (1) 需要经过复杂运算后得出的数据,存储系统无能为力。 (2) 读多写少的数据,存储系统有心无力。 缓存可以弥补存储系统在这些复杂业务场景下的不足,缓存的基本原理就是将可能重复使用的数据放到内存中,一次生成,多次使用, 避免每次使用都去访问存储系统。 Memcache缓存 缓存能够带来性能的大幅提升, 以Memcache 为例...

如何运用java代码操作Redis

发布时间:2022-11-24 缓存 REDIS JAVA
目录 1、java如何连接Redis?         1.1.启动Redis服务         1.2.导入相关Redis依赖         1.3.java代码进行连接 2、java连接Redis         2.1.String                 2.1.1.设值                 2.1.2.拿值                 2.1.3.删除                 2.1.4.修改                 2.1.5.给键值对设置过期时间...

Caffeine《二》

发布时间:2022-11-24 缓存 JAVA REDIS
《Caffeine(Java顶级缓存组件)二》 提示: 本材料只做个人学习参考,不作为系统的学习流程,请注意识别!!! 8. 缓存驱逐算法 如果要考虑数据的缓存,实际上有两个最为核心的话题:一个就是缓存数据的命中率(命中性能越高,缓存的性能就越好),另外一个就是缓存的驱逐,这个驱逐有两点:一个就是驱逐的算法,另外一个就是驱逐具体实现。 缓存技术发展的最初目的就是为了解决数据的读取性能,但是在缓存之中如果保存了过多的数据项,则最终一定会产生内存溢出问题,所以就必须设计一种数据的缓存算法,在空间不足的...

重新认识下JVM级别的本地缓存框架Guava Cache(2)——深入解读其容量限制与数据淘汰策略

发布时间:2022-11-24 缓存 GUAVA JVM JAVA细节深究
大家好,又见面了。 本文是笔者作为掘金技术社区签约作者的身份输出的缓存专栏系列内容,将会通过系列专题,讲清楚缓存的方方面面。如果感兴趣,欢迎关注以获取后续更新。 通过《重新认识下JVM级别的本地缓存框架Guava Cache——优秀从何而来》一文,我们知道了Guava Cache作为JVM级别的本地缓存组件的诸多暖心特性,也一步步地学习了在项目中集成并使用Guava Cache进行缓存相关操作。Guava Cache作为一款优秀的本地缓存组件,其内部很多实现机制与设计策略,同样值得开发人员深入...

【谷粒商城高级篇笔记】四、缓存

发布时间:2022-11-28 缓存 JAVA REDIS
1 缓存使用 为了系统性能的提升,我们一般都会将部分的数据放入缓存中,加速访问。而DB承担数据落盘工作。 1.1 哪些数据适合放到缓存中? 即时性、数据一致性要求不高的访问量大且更新频率不高的数据(读多,写少) 举例 电商类应用,商品分类,商品列表等适合缓存并加一个失效时间(根据更新频率来定),后台如果发布一个商品,买家需要5分钟才能看到新的商品一般还是可以接受的。 1.2 整合Redis 引入 spring-boot-data-redis-starter简单配置redis的host等信息spring...

我熬夜三个通宵,把公司redis性能优化了10倍!

发布时间:2022-11-24 缓存 REDIS 网络 数据库
「 关注“石杉的架构笔记”,大厂架构经验倾囊相授 」 文章来源:【公众号:水滴与银弹】 前言 Redis 作为优秀的内存数据库,其拥有非常高的性能,单个实例的 OPS 能够达到 10W 左右。但也正因此如此,当我们在使用 Redis 时,如果发现操作延迟变大的情况,就会与我们的预期不符。 你也许或多或少地,也遇到过以下这些场景: 在 Redis 上执行同样的命令,为什么有时响应很快,有时却很慢?为什么 Redis 执行 SET、DEL 命令耗时也很久?为什么我的 Redis 突然慢了一波,之后又恢复...

caffeine缓存过期淘汰策略遇到的坑

发布时间:2022-11-25 缓存 JAVA
三种方法 expireAfterWrite:代表着写了之后多久过期。(上面列子就是这种方式) expireAfterAccess: 代表着最后一次访问了之后多久过期。 expireAfter:在expireAfter中需要自己实现Expiry接口,这个接口支持create,update,以及access了之后多久过期。注意这个API和前面两个API是互斥的。这里和前面两个API不同的是,需要你告诉缓存框架,他应该在具体的某个时间过期,也就是通过前面的重写create,update,以及access的方法,...