
缓存
zl1zl2zl3
这个作者很懒,什么都没留下…
展开
-
天啊,为什么我的 Redis 变慢了。。
本文作者:Kaito链接:kaito-kidd.com/2020/07/03/redis-latency-analysis/Redis作为内存数据库,拥有非常高的性能,单个实例的QPS能够达到10W左右。但我们在使用Redis时,经常时不时会出现访问延迟很大的情况,如果你不知道Redis的内部实现原理,在排查问题时就会一头雾水。很多时候,Redis出现访问延迟变大,都与我们的使用不当或运维不合理导致的。这篇文章我们就来分析一下Redis在使用过程中,经常会遇到的延迟问题以及如何定位和分析。.转载 2020-09-03 10:09:02 · 405 阅读 · 0 评论 -
Caffeine Cache~高性能 Java 本地缓存之王
前面刚说到Guava Cache,他的优点是封装了get,put操作;提供线程安全的缓存操作;提供过期策略;提供回收策略;缓存监控。当缓存的数据超过最大值时,使用LRU算法替换。这一篇我们将要谈到一个新的本地缓存框架:Caffeine Cache。它也是站在巨人的肩膀上-Guava Cache,借着他的思想优化了算法发展而来。本篇博文主要介绍Caffine Cache 的使用方式,以及Caffine Cache在SpringBoot中的使用。1. Caffine Cache 在算法上的优点-W-Ti转载 2020-08-21 14:04:45 · 799 阅读 · 0 评论 -
Redis 10亿数据量只需要100MB内存,为什么这么牛?
作者:java架构设计 来源:toutiao.com/i6767642839267410445本文主要和大家分享一下redis的高级特性:bit位操作。力求让大家彻底学会使用redis的bit位操作并掌握其底层实现原理!主要包含以下内容: redis位操作命令示例 底层数据结构分析 为什么他的算法时间复杂度是O(1)? 10亿数据量需要多大的存储空间? redis位操作适合哪些应用场景? 本文redis试验代码基于如下环境:操作系统:Ma..转载 2020-08-21 10:01:45 · 592 阅读 · 0 评论 -
熬了一个通宵,终于把7千万个Key删完了
作者:浪漫先生 && 51cto技术栈整理出处:juejin.im/post/5f18423fe51d453493113f5c由于有一条业务线不理想,高层决定下架业务。对于我们技术团队而言,其对应的所有服务器资源和其他相关资源都要释放。释放了 8 台应用服务器;1 台 ES 服务器;删除分布式定时任务中心相关的业务任务;备份并删除 MySQL 数据库;删除 Redis 中相关的业务缓存数据。CTO 指名点姓让我带头冲锋,才扣了我绩效……好吧,冲~其他都还好,不多时就解.转载 2020-08-21 09:51:59 · 210 阅读 · 0 评论 -
无锁缓存,每秒10万并发,究竟如何实现?
有一类业务场景:(1)超高吞吐量,每秒要处理海量请求;(2)写多读少,大部分请求是对数据进行修改,少部分请求对数据进行读取;这类业务,有什么实现技巧么?接下来,一起听我从案例入手,娓娓道来。快狗打车,场景举例:(1)司机地理位置信息会随时变化,可能每几秒钟地理位置要修改一次;(2)用户打车的时候查看某个司机的地理位置,查询地理位置的频率相对较低;这里要用到两个接口:(1)大量修改司机信息:void SetDriverInfo(long driver_id, Drive转载 2020-08-19 15:07:43 · 363 阅读 · 0 评论 -
厉害了,如何通过双 key 来解决缓存并发问题?
来源公众号:IT人的职场进阶https://mp.weixin.qq.com/s/qOxTw4vT744ZjsJkc5HsEQ我们在使用缓存的时候,不管Redis或者是Memcached,基本上都会遇到以下3个问题:缓存穿透、缓存并发、缓存集中失效。这篇文章主要针对【缓存并发】问题展开讨论,并给出具体的解决方案。1.什么是缓存并发?在高并发的访问下,当某个缓存处于过期失效的时间点时,极有可能出现多个进程同时查询该缓存(该缓存是业务场景中非常 "热点" 的数据,比如首页的缓存数据)。因为查.转载 2020-07-11 20:56:04 · 436 阅读 · 0 评论 -
Spring Cache 缺陷,我好像有解决方案了
Spring Cache 缺陷Spring Cache 是一个非常优秀的缓存组件。但是在使用 Spring Cache 的过程当中,小黑同学也遇到了一些痛点。比如,现在有一个需求:通过多个 userId 来批量获取用户信息。方案 1此时,我们的代码可能是这样:List<User>users=ids.stream().map(id->{returngetUserById(id);}).collect(Collectors.toList())...转载 2020-07-10 20:23:42 · 2066 阅读 · 0 评论 -
微服务架构下,静态数据通用缓存机制!
本文转自:波斯码链接:https://blog.bossma.cn/architecture/microservice-business-static-data-universal-cache-mechanism/在分布式系统中,特别是最近很火的微服务架构下,有没有或者能不能总结出一个业务静态数据的通用缓存处理机制或方案,这篇文章将结合一些实际的研发经验,尝试理清其中存在的关键问题以及探寻通用的解决之道。什么是静态数据这里静态数据是指不经常发生变化或者变化频率比较低的数据,比如车型库、用.转载 2020-06-18 19:42:30 · 319 阅读 · 0 评论 -
高频面试题:如何保证缓存与数据库的双写一致性?
分布式缓存是现在很多分布式应用中必不可少的组件,但是用到了分布式缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性问题?Cache Aside Pattern最经典的缓存+数据库读写的模式,就是 Cache Aside Pattern。读的时候,先读缓存,缓存没有的话,就读数据库,然后取出数据后放入缓存,同时返回响应。更新...转载 2020-03-17 12:00:10 · 333 阅读 · 0 评论 -
美图每天亿级消息存储演进——从Redis到Titan,完美解决扩容问题
作者简介:王鸿佳,系统研发工程师 ,现任职于美图公司,主要负责通用长连接服务、美图推送系统基础服务研发。对分布式研发技术及开源项目有浓厚的兴趣,DistributedIO 团队核心成员。导读美图公司拥有众多的产品以及海量活跃用户,我们的日推消息也达到了上亿次,这对消息推送也提出了较高的要求。2017 年,美图自研推送服务,采用 Redis 作为消息存储,但随着业务接入量增加、数据量快速...转载 2019-12-10 13:03:51 · 319 阅读 · 0 评论 -
最强 Java Redis 客户端
为什么要在 Java 分布式应用程序中使用缓存?在提高应用程序速度和性能上,每一毫秒都很重要。根据谷歌的一项研究,假如一个网站在3秒钟或更短时间内没有加载成功,会有 53% 的手机用户会离开。缓存是让分布式应用程序加速的重要技术之一。存储的信息越接近 CPU,访问速度就越快。从 CPU 缓存中加载数据比从 RAM 中加载要快得多,比从硬盘或网络上加载要快得多得多。要存储经常访问的数据,...转载 2019-12-10 11:20:02 · 199 阅读 · 0 评论 -
微服务架构,如何做分布式,通用缓存机制?
在分布式系统中,特别是最近很火的微服务架构下,有没有或者能不能总结出一个业务静态数据的通用缓存处理机制或方案,这篇文章将结合一些实际的研发经验,尝试理清其中存在的关键问题以及探寻通用的解决之道。什么是静态数据这里静态数据是指不经常发生变化或者变化频率比较低的数据,比如车型库、用户基本信息、车辆基本信息等,车型库这种可能每个月会更新一次,用户和车辆基本信息的变化来源于用户注册、修改,这个操作...转载 2019-12-09 09:32:50 · 478 阅读 · 0 评论 -
这款多线程中间件,吊打 Redis!
今天给大家介绍的是KeyDB,KeyDB项目是从redis fork出来的分支。众所周知redis是一个单线程的kv内存存储系统,而KeyDB在100%兼容redis API的情况下将redis改造成多线程。上次也跟大家说了,redis多线程正式版将在今年底发布,大家拭目以待。线程模型KeyDB将redis原来的主线程拆分成了主线程和worker线程。每个worker线程都是io线...转载 2019-10-23 13:34:44 · 526 阅读 · 0 评论 -
从零单排学Redis【白银】
前言今天继续来学习Redis,上一篇从零单排学Redis【青铜】已经将Redis常用的数据结构过了一遍了。如果还没看的同学可以先去看一遍再回来~这篇主要讲的内容有: Redis服务器的数据库 Redis对过期键的处理 Redis持久化策略(RDB和AOF) 本文力求简单讲清每个知识点,希望大家看完能有所收获一、Redis服务器中的数据库我们应该都用过M...转载 2019-04-06 09:29:59 · 358 阅读 · 0 评论 -
Spring Boot 缓存开发实战
一:springBoot开启注解1.1:搭建springBoot环境在idea中,搭建一个springboot是很简单easy的。接下来我简单说一下步骤:File->new->projiect->Spring Initializer->next->named->web(选中)->Finish->new Window1.2:开始缓存...转载 2019-04-18 14:13:13 · 198 阅读 · 0 评论 -
深入Redis 主从复制原理
复制原理1.复制过程复制的过程步骤如下:1、从节点执行 slaveof 命令 2、从节点只是保存了 slaveof 命令中主节点的信息,并没有立即发起复制 3、从节点内部的定时任务发现有主节点的信息,开始使用 socket 连接主节点 4、连接建立成功后,发送 ping 命令,希望得到 pong 命令响应,否则会进行重连 5、...转载 2019-04-09 10:25:01 · 205 阅读 · 0 评论 -
Redis查漏补缺:最易错过的技术要点大扫盲
一、为什么使用Redis笔者认为,在项目中使用Redis,主要是从两个角度去考虑:性能和并发。当然,Redis还具备可做分布式锁等功能的其它功能,但如果只是为了分布式锁这些其它功能,完全还有其它中间件(如Zookpeer等)可以代替,并不是非要使用Redis。因此,这个问题主要从性能和并发两个角度去答:1、性能如下图所示,我们在碰到需要执行耗时特别久、且结果不频繁变动的SQL时,就...转载 2019-04-03 11:08:21 · 319 阅读 · 0 评论 -
Redisson分布式锁实现
概述分布式系统有一个著名的理论CAP,指在一个分布式系统中,最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。所以在设计系统时,往往需要权衡,在CAP中作选择。当然,这个理论也并不一定完美,不同系统对CAP的要求级别不一样,选择需要考虑方方面面。在微服务系统中,一个请求存在多级跨服务调用...转载 2019-04-08 15:57:27 · 599 阅读 · 0 评论 -
从零单排学Redis【铂金二】
前言好的,今天我们要上【铂金二】了,如果还没有上铂金的,赶紧先去蹭蹭经验再回来(不然不带你上分了): 从零单排学Redis【青铜】 从零单排学Redis【白银】 从零单排学Redis【黄金】 从零单排学Redis【铂金一】 在上篇中抛出了一个问题:抛个问题:如果从服务器挂了,没关系,我们一般会有多个从服务器,其他的请求可以交由没有挂的从服务器继续处...转载 2019-04-06 17:18:40 · 413 阅读 · 0 评论 -
从零单排学Redis【铂金一】
前言好的,今天我们要上铂金段位了,如果还没经历过青铜和白银和黄金阶段的,可以先去蹭蹭经验再回来: 从零单排学Redis【青铜】 从零单排学Redis【白银】 从零单排学Redis【黄金】 这篇文章主要讲的是Redis主从复制。因为Redis集群的知识点有点多,所以铂金上分得要好几篇~文本力求简单讲清每个知识点,希望大家看完能有所收获一、主从架构1.1为...转载 2019-04-06 16:51:37 · 193 阅读 · 0 评论 -
从零单排学Redis【黄金】
前言好的,今天我们要上黄金段位了,如果还没经历过青铜和白银阶段的,可以先去蹭蹭经验再回来: 从零单排学Redis【青铜】 从零单排学Redis【白银】 看过相关Redis基础的同学可以知道Redis是单线程的,很多面试题也很可能会问到“为什么Redis是单线程的还那么快”。这篇文章来讲讲单线程的内部的原理。文本力求简单讲清每个知识点,希望大家看完能有所收获一、基...转载 2019-04-06 09:41:31 · 321 阅读 · 0 评论 -
面试前必须要知道的Redis面试题
前言回顾前面: 从零单排学Redis【青铜】 从零单排学Redis【白银】 从零单排学Redis【黄金】 从零单排学Redis【铂金一】 从零单排学Redis【铂金二】 Redis今天来分享一下Redis几道常见的面试题: 如何解决缓存雪崩? 如何解决缓存穿透? 如何保证缓存与数据库双写时一致的问题? 一、缓存雪崩...转载 2019-04-06 17:19:19 · 597 阅读 · 0 评论 -
为何单线程的 Redis 却能支撑高并发?
最近在看 UNIX 网络编程并研究了一下 Redis 的实现,感觉 Redis 的源代码十分适合阅读和分析,其中 I/O 多路复用(mutiplexing)部分的实现非常干净和优雅,在这里想对这部分的内容进行简单的整理。几种 I/O 模型为什么 Redis 中要使用 I/O 多路复用这种技术呢?首先,Redis 是跑在单线程中的,所有的操作都是按照顺序线性执行的,但是由于读写操作等...转载 2019-05-04 08:45:58 · 544 阅读 · 0 评论 -
Spring@Cacheable注解在类内部调用失效的问题
如图所示,getRecomendGoogs方法里面调用findImgUrlByName方法,在findImgUrlByName方法上使用@Cacheable注解的时候,并没有走缓存。要解决这个问题,首先我们需要了解spring缓存的原理。spring cache的实现原理跟spring的事务管理类似,都是基于AOP的动态代理实现的:即都在方法调用前后去获取方法的名称、参数、返回值,然后根据方...转载 2019-05-05 08:22:35 · 2442 阅读 · 0 评论 -
MemCache详细解读
MemCache是什么MemCache是一个自由、源码开放、高性能、分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度。MemCaChe是一个存储键值对的HashMap,在内存中对任意的数据(比如字符串、对象等)所使用的key-value存储,数据可以来自数据库调用、API调用,或者页面渲染的结果。...转载 2018-11-10 13:30:34 · 368 阅读 · 0 评论 -
学会这几个Redis技巧,让你的程序快如闪电
来源:https://dwz.cn/RseclNiY一、Redis封装架构讲解实际上NewLife.Redis是一个完整的Redis协议功能的实现,但是Redis的核心功能并没有在这里面,而是在NewLife.Core里面。这里可以打开看一下,NewLife.Core里面有一个NewLife.Caching的命名空间,里面有一个Redis类,里面实现了Redis的基本功能;另一...转载 2019-06-27 21:51:53 · 303 阅读 · 0 评论 -
如何正确访问Redis中的海量数据?服务才不会挂掉!
来源:https://dwz.cn/pm3pI6MZ一、前言有时候我们需要知道线上的Redis的使用情况,尤其需要知道一些前缀的key值,让我们怎么去查看呢?并且通常情况下Redis里的数据都是海量的,那么我们访问Redis中的海量数据?如何避免事故产生!今天就给大家分享一个小知识点,希望大家轻喷。二、事故产生因为我们的用户token缓存是采用了【user_token:us...转载 2019-06-10 19:26:07 · 448 阅读 · 0 评论 -
20万用户同时访问一个热点Key,如何优化缓存架构?
来源:石杉的架构笔记(ID:shishan100)这篇文章,咱们来聊聊热点缓存的架构优化问题。使用缓存集群的时候,最怕的就是热 Key、大 Value 这两种情况。一、为什么要用缓存集群啥叫热 Key 和大 Value 呢?简单来说,热 Key,就是你的缓存集群中的某个 Key 瞬间被数万甚至十万的并发请求打爆。大 Value,就是你的某个 Key 对应的 Value 可能...转载 2019-06-03 10:04:59 · 229 阅读 · 0 评论 -
Redis 如何保持和 MySQL 数据一致
1.MySQL持久化数据,Redis只读数据redis在启动之后,从数据库加载数据。读请求:不要求强一致性的读请求,走redis,要求强一致性的直接从mysql读取写请求:数据首先都写到数据库,之后更新redis(先写redis再写mysql,如果写入失败事务回滚会造成redis中存在脏数据)2.MySQL和Redis处理不同的数据类型 MySQL处理实时性数据,例如...转载 2019-06-06 13:47:07 · 715 阅读 · 0 评论 -
如何发现 Redis 热点 Key ,解决方案有哪些?
一、热点问题产生原因热点问题产生的原因大致有以下两种:1.1 用户消费的数据远大于生产的数据(热卖商品、热点新闻、热点评论、明星直播)。在日常工作生活中一些突发的的事件,例如:双十一期间某些热门商品的降价促销,当这其中的某一件商品被数万次点击浏览或者购买时,会形成一个较大的需求量,这种情况下就会造成热点问题。同理,被大量刊发、浏览的热点新闻、热点评论、明星直播等,这些典型的读多写少的场...转载 2019-05-23 19:45:05 · 259 阅读 · 0 评论 -
Redis常用操作和内存模型
几个常用命令行 登录redis-cli-h127.0.0.1-p6379-a123 查看内存info memory 这里面 info 是命令 memory 是参数 单单输入 info 就死查看所有的信息,如果只需要查看内存情况,只需要加上内存这个参数127.0.0.1:6379> info memory# Memoryused_memory:1031440...转载 2019-05-23 13:46:18 · 219 阅读 · 0 评论 -
一个经典面试题:如何保证缓存与数据库的双写一致性?
作者:你是我的海啸地址:https://blog.youkuaiyun.com/chang384915878/article/details/8675646只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性问题?面试题剖析一般来说,如果允许缓存可以稍微的跟数据库偶尔有不一致的情况,也就是说如果你的系统不是严格要求 “缓存+数据库...转载 2019-05-16 14:50:54 · 398 阅读 · 0 评论 -
除了缓存,Redis 都解决了哪些问题?
先看一下Redis是一个什么东西。官方简介解释到:Redis是一个基于BSD开源的项目,是一个把结构化的数据放在内存中的一个存储系统,你可以把它作为数据库,缓存和消息中间件来使用。同时支持strings,lists,hashes,sets,sorted sets,bitmaps,hyperloglogs和geospatial indexes等数据类型。它还内建了复制,lua脚本,LRU,事务等功...转载 2019-05-06 01:00:57 · 1345 阅读 · 0 评论 -
从零单排学Redis【青铜】
前言redis最近在学Redis,我相信只要是接触过Java开发的都会听过Redis这么一个技术。面试也是非常高频的一个知识点,之前一直都是处于了解阶段。秋招过后这段时间是没有什么压力的,所以打算系统学学Redis,这也算是我从零学习Redis的笔记吧。本文力求讲清每个知识点,希望大家看完能有所收获。一、介绍一下Redis首先,肯定是去官网看看官方是怎么介绍Redis的啦。ht...转载 2019-04-05 21:09:47 · 691 阅读 · 0 评论 -
关于 Redis 的一些新特性、使用建议和最佳实践
redis从2009年诞生到现在已经走过将近10年,从最开始大家在讨论nosql和传统关系数据库孰优孰劣,到现在大家谈起分布式锁,缓存纷纷将Redis作为其第一选择,服务端面试中Redis也作为一项必备能力,而如今Redis 5.0已经发布,越来越多的新特性被加入,我完整的观察到并参与了一项新的开源产品从走入大家的视野到被接受,之后再流行的整个过程,也同时见证了memcache的日薄西山。但是...转载 2019-03-25 09:43:32 · 516 阅读 · 0 评论 -
一文让你明白Redis持久化
网上虽然已经有很多类似的介绍了,但我还是自己总结归纳了一下,自认为内容和细节都是比较齐全的。文章篇幅有 4k 多字,货有点干,断断续续写了好几天,希望对大家有帮助。不出意外地话,今后会陆续更新 Redis 相关的文章,和大家一起学习。好了,下面开始回归正文:Redis 一共有 2 种持久化方式,分别是 RDB 和 AOF,下面我来详细介绍两种方式在各个过程所做的事情,特点等等。...转载 2019-03-23 09:32:52 · 188 阅读 · 0 评论 -
对缓存击穿的一点思考
前言缓存(内存 or Memcached or Redis.....)在互联网项目中广泛应用,本篇博客将讨论下缓存击穿这一个话题,涵盖缓存击穿的现象、解决的思路、以及通过代码抽象方式来处理缓存击穿。 什么是缓存击穿?缓存击穿上面的代码,是一个典型的写法:当查询的时候,先从Redis集群中取,如果没有,那么再从DB中查询并设置到Redis集群中。注意,在实际开发中,我们一...转载 2018-11-27 10:19:18 · 164 阅读 · 0 评论 -
微服务架构下静态数据通用缓存机制
在分布式系统中,特别是最近很火的微服务架构下,有没有或者能不能总结出一个业务静态数据的通用缓存处理机制或方案,这篇文章将结合一些实际的研发经验,尝试理清其中存在的关键问题以及探寻通用的解决之道。 什么是静态数据这里静态数据是指不经常发生变化或者变化频率比较低的数据,比如车型库、用户基本信息、车辆基本信息等,车型库这种可能每个月会更新一次,用户和车辆基本信息的变化来源于用户注册、修改...转载 2018-11-17 14:41:44 · 297 阅读 · 0 评论 -
动手实现一个 LRU cache
前言LRU 是 LeastRecentlyUsed 的简写,字面意思则是 最近最少使用。通常用于缓存的淘汰策略实现,由于缓存的内存非常宝贵,所以需要根据某种规则来剔除数据保证内存不被撑满。如常用的 Redis 就有以下几种策略:策略 描述 volatile-lru 从已设置过期时间的数据集中挑选最近最少使用的数据淘汰 volatile-ttl 从已设置过期...转载 2018-11-14 10:46:29 · 980 阅读 · 0 评论 -
Guava 源码分析(Cache 原理)
前言Google 出的 Guava 是 Java 核心增强的库,应用非常广泛。我平时用的也挺频繁,这次就借助日常使用的 Cache 组件来看看 Google 大牛们是如何设计的。 缓存缓存在日常开发中举足轻重,如果你的应用对某类数据有着较高的读取频次,并且改动较小时那就非常适合利用缓存来提高性能。缓存之所以可以提高性能是因为它的读取效率很高,就像是 CPU 的 L1、L2、...转载 2018-11-14 10:55:22 · 802 阅读 · 0 评论