缓存
文章平均质量分 85
yygr
这个作者很懒,什么都没留下…
展开
-
redis集群 Waiting for the cluster to join 一直等待
一直等待 Waiting for the cluster to join 很久都没有反应。redis集群不仅需要开通redis客户端连接的端口,而且需要开通集群总线端口。故,所有服务器的点需要开通redis的客户端连接端口和集群总线端口。注意:iptables 放开,如果有安全组,也要放开这两个端口。集群总线端口为redis客户端连接的端口 + 10000。如redis端口为6379。则集群总线端口为16379。redis集群创建执行。转载 2022-10-05 21:35:57 · 413 阅读 · 0 评论 -
关于 Snowflake 算法奇偶性小探讨
UidGenerator 的做法比较巧妙,它先获取秒(UidGenerator 是基于秒,不是毫秒)内序列的第一个id,然后依次增加,直到秒内序列最大值,代码如下。其核心思想是:使用41bit作为毫秒数,10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID),最后还有一个符号位,永远是0。问题就在这儿,如果并发量不高,别说毫秒,连秒内并发都少,所以序列基本上都是0,那生成的 ID 基本就都是偶数了。转载 2022-09-22 10:07:25 · 231 阅读 · 0 评论 -
Canal 实战 | 第一篇:SpringBoot 整合 Canal + RabbitMQ 实现监听 MySQL 数据库同步更新 Redis 缓存
译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger 获取增量变更。从 2010 年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消费业务。基于日志增量订阅和消费的业务包括数据库镜像数据库实时备份索引构建和实时维护(拆分异构索引、倒排索引等)业务 cache 刷新带业务逻辑的增量数据处理。转载 2022-09-16 11:12:16 · 3811 阅读 · 0 评论 -
缓存和数据库一致性问题
数据的一致性不强,对一致性要求高的系统要谨慎使用,如果有人在数据尚未写入数据源的情况下直接从数据源获取数据,则可能导致获取过期数据,不过对于频繁写入的场景,这个其实非常适用。那么此时,缓存中保存的数据就是不正确的,而如果采用了删除缓存的方式,就不会发生这种问题了,因为缓存删除了,就要实时去数据库中查询,数据库中的数据是两个线程更新后的结果。延迟双删是这样:先执行缓存清除操作,再执行数据库更新操作,延迟N秒之后再执行一次缓存清除操作,这样就不用担心缓存中的数据和数据库中的数据不一致。转载 2022-09-16 10:53:04 · 177 阅读 · 0 评论 -
【Redis】之过期删除策略和内存淘汰策略
当我们查询一个键时,Redis 首先检查该键是否存在过期字典中,如果存在,那就获取其过期时间,然后将过期时间和当前系统时间进行比对,比系统时间大,那就没有过期;设置该 key 过期时间后,我们不去管它,当需要该 key 时,我们在检查其是否过期,如果过期,我们就删掉它,反之返回该 key。在设置某个 key 的过期时间同时,我们创建一个定时器,让定时器在该过期时间到来时,立即执行对其进行删除的操作。Redis 的定期删除策略并不是一次运行就检查所有的库、所有的键,而是随机检查一定数量的键。转载 2022-09-10 17:02:18 · 167 阅读 · 0 评论 -
完全搞懂Redis持久化之RDB原理
http://www.javashuo.com/article/p-uiavjars-kp.htmlredis里有10gb数据,忽然停电或者意外宕机了,再启动的时候10gb都没了?!因此须要持久化,宕机后再经过持久化文件将数据恢复。linuxrdb文件都是二进制,很小。好比内存数据有10gb,rdb文件可能就1gb,只是举例。web数据可靠性比aof低,也就是会丢失的多。由于aof能够配置每秒都持久化或者每一个命令处理完就持久化一次这种高频率的操做,而rdb的话虽然也是靠配置进行bgsave,可是没有aof转载 2022-06-27 12:25:24 · 220 阅读 · 0 评论 -
Redis bitmap位图操作(图解)
https://blog.csdn.net/youandme520/article/details/122921951https://www.csdn.net/tags/MtTaIg0sOTY1NDUxLWJsb2cO0O0O.html在平时开发过程中,经常会有一些 bool 类型数据需要存取。比如记录用户一年内签到的次数,签了是 1,没签是 0。如果使用 key-value 来存储,那么每个用户都要记录 365 次,当用户成百上亿时,需要的存储空间将非常巨大。为了解决这个问题,Redis 提供了位图结构。转载 2022-06-22 15:48:34 · 844 阅读 · 0 评论 -
redis之缓存雪崩,缓存穿透,缓存预热,缓存更新
https://zhuanlan.zhihu.com/p/110384034由于原有缓存失效,新缓存未到期(例如:我们设置缓存时采用了相同的过期时间,在同一时刻出现大面积的缓存过期),所有原本应该访问缓存的请求都去查询数据库了,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机。解决方案用户查询数据,在数据库没有,自然在缓存中也不会有,这样就导致用户在查询的时候,在缓存中找不到,每次都要去数据库再查询一遍,然后返回空(相当于进行了两次无用的查询)。这样请求就绕过了缓存直接查数据库,这也是经常提的缓存转载 2022-06-09 14:44:48 · 92 阅读 · 0 评论 -
一张图搞懂 Redis 缓存雪崩、缓存穿透、缓存击穿
https://baijiahao.baidu.com/s?id=1681691345944318719&wfr=spider&for=pc缓存异常场景分类在实际生产环境中有时会遇到缓存穿透、缓存击穿、缓存雪崩等异常场景,为了避免异常带来巨大损失,我们需要了解每种异常发生的原因以及解决方案,帮助提升系统可靠性和高可用。缓存穿透什么是缓存穿透?缓存穿透是指用户请求的数据在缓存中不存在即没有命中,同时在数据库中也不存在,导致用户每次请求该数据都要去数据库中查询一遍,然后返回空。如果有恶意攻击者不断请求系统中不存转载 2022-06-09 14:41:27 · 155 阅读 · 0 评论 -
redis 缓存预热_缓存世界中的三大问题及解决方案
https://blog.csdn.net/weixin_34502341/article/details/112231375Redis 经常用于系统中的缓存,可以极大地提高了系统性能和效率,但同时也带来一些问题。一个是数据一致性问题。从严格意义上讲,只要使用缓存,就会出现一致性问题,这是无法解决的。另一个问题是本文将讨论的缓存穿透,缓存击穿和缓存雪崩,这三个问题不仅限于 Redis,其他缓存工具同样需要面对这三个问题。接下来我详细讲解这三个问题以及对应的解决方案。一、缓存穿透缓存穿透意味着当用户查询数据库转载 2022-06-09 14:36:27 · 317 阅读 · 0 评论 -
使用rancher部署redis集群并且解决pod重启ip改变导致的redis集群问题
1.两台主机主机ip 作用 192.168.238.141 做rancher服务器 192.168.238.142 做k8s集群worker机器 2.redis集群信息(三主三从)服务名 容器内redis端口 容器内redis集群通信端口 映射主机 映射主机redis端口 映射主机redis集群通信端口 credis1 6379 16379 192.168.238.142 20.原创 2022-05-08 22:30:33 · 5893 阅读 · 15 评论 -
Redis 主从复制时网络开小差了怎么整
https://baijiahao.baidu.com/s?id=1683989699060870743&wfr=spider&for=pc这期我们继续回到之前的 Redis 话题。今天主要讲的是主从复制数据一致性相关以及面对网络中断如何进行数据同步的问题。- 思维导图 -主从模式配置对于 Redis 主从大家可能并不陌生,但是配置的话日常工作中并不会经常操作。在这里简单介绍下主从的相关配置。1、主从模式Redis 中设置主从的方式很简单,通常转载 2022-05-06 11:29:49 · 63 阅读 · 0 评论 -
Redis集群详细讲解之主从模式
https://baijiahao.baidu.com/s?id=1714650966588384450&wfr=spider&for=pcRedis有三种集群模式,分别是:主从模式、哨兵模式、Cluster模式。Rdis最开始使用主从模式做集群,若master宕机需要手动配置slave转为master;后来为了高可用提出来哨兵模式,该模式下有一个哨兵监视master和slave,若master宕机可自动将slave转为master,但它也有一个问题,就是不能动态扩充;所以在3.x提转载 2022-05-06 10:43:13 · 582 阅读 · 0 评论 -
Docker实现Redis主从配置、哨兵模式
https://www.jianshu.com/p/ce1d78cd368a1 使用docker下载redis镜像,默认下载最redis最新版本,目前版本号为5.0.0,如果需要其他版本请登录Docker Hub进行搜索[root@localhost ~]# docker pull redis2 下载完毕后分别创建/home/docker/redis/data、redis-6379-data、redis-6380-data、redis-6381-data、sentinel-26379-转载 2022-05-06 10:27:20 · 355 阅读 · 0 评论 -
redis配置RDB、AOF以及RDB、AOF同时开启
https://www.jianshu.com/p/a91329ae210c1、配置RDB持久化机制redis.conf文件,也就是/etc/redis/6379.conf,去配置持久化save 60 1000每隔60s,如果有超过1000个key发生了变更,那么就生成一个新的dump.rdb文件,就是当前redis内存中完整的数据快照,这个操作也被称之为snapshotting,快照也可以手动调用save或者bgsave命令,同步或异步执行rdb快照生成save可以设置多个,转载 2022-05-06 08:19:18 · 5923 阅读 · 0 评论 -
基于LUA脚本的Redis分布式锁(SpringBoot实现)
https://www.jianshu.com/p/1145cd7e0cf11.前言Redis实现分布式锁,本身比较简单,就是Redis中一个简单的KEY。一般都利用setnx(set if not exists)指令可以非常简单的实现加锁,锁用完后,再调用del指令释放锁。要确保锁可用,一般需要解决几个问题:不能出现死锁情况,一个获得锁的客户端宕机或者异常后,要保障其他客户端也能获得锁。 应用程序通过网络与Redis交互,为避免网络延迟以及获取锁线程与其他线程不冲突,需要保障锁操作的原子转载 2022-04-17 11:02:55 · 2912 阅读 · 4 评论 -
redission布隆过滤器解决缓存穿透问题,定时刷新bloomFilter中的数据
https://blog.csdn.net/m0_50976581/article/details/113837970布隆过滤器初体验: 项目启动时创建bloomFilter对象,给他存数据,再注入到容器里,这个就不写了,跟下面差不多......定时任务触发,清空bloomFilter,存入最新的数据。/** * @author gaoyuzheng */@Componentpublic class BloomTask { @Autowired PmsF...转载 2022-04-17 11:03:29 · 953 阅读 · 3 评论 -
Spring Boot -分布式锁Redisson
http://events.jianshu.io/p/5b21d978de13目录 Spring Cloud Alibaba 微服务系列文章0、Spring Cloud Alibaba微服务系列-准备工作 1、Spring Cloud Alibaba微服务系列-服务注册中心Nacos 2、Spring Cloud Alibaba微服务系列-配置中心Nacos 3、Spring Cloud Alibaba微服务系列-服务调用Open Feign 4、Spring Cloud Alibaba微服转载 2022-04-17 11:03:38 · 411 阅读 · 0 评论 -
SpringBoot整合Redisson
https://www.jianshu.com/p/118fceb2194aRedisson的Github地址:https://github.com/redisson/redisson/wiki/Table-of-Content1、添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>转载 2022-04-17 11:03:47 · 981 阅读 · 0 评论 -
Redis缓存使用&Redisson分布式锁
https://blog.csdn.net/weixin_47409774/article/details/123505651缓存哪些数据适合放入缓存? 即时性、数据一致性要求不高的 访问量大且更新频率不高的数据(读多,写少) 凡是放入缓存中的数据我们都应该指定过期时间,使其可以在系统即使没 有主动更新数据也能自动触发数据加载进缓存的流程。避免业务崩溃导致的数据永久不一致 问题。SpringBoot整合Redis1.导入依赖<!-- 引入redis --&g...转载 2022-04-17 11:04:47 · 641 阅读 · 0 评论 -
推荐几款 Redis 可视化工具
https://www.jb51.net/article/208969.htm目录1.命令行 2.可视化工具分类 3.RedisDesktopManager 4.medis 5.AnotherRedisDesktopManager 6.FastoRedis 7.RedisPlus 8.Red 9.RedisInsight 10.Iedis2 11.总结1. 命令行不知道大家在日常操作redis时用什么可视化工具呢?以前总觉得没有什么太好的可视化工具,于是问了一.转载 2022-04-17 11:03:57 · 2645 阅读 · 2 评论 -
redisson中的看门狗机制总结
https://www.94zyw.com/2944.html1:普通的Redis分布式锁的缺陷我们在网上看到的redis分布式锁的工具方法,大都满足互斥、防止死锁的特性,有些工具方法会满足可重入特性。如果只满足上述3种特性会有哪些隐患呢?redis分布式锁无法自动续期,比如,一个锁设置了1分钟超时释放,如果拿到这个锁的线程在一分钟内没有执行完毕,那么这个锁就会被其他线程拿到,可能会导致严重的线上问题,我已经在秒杀系统故障排查文章中,看到好多因为这个缺陷导致的超卖了。Rediss转载 2022-04-17 11:04:04 · 346 阅读 · 0 评论 -
Redisson 分布式锁源码 02:看门狗
https://zhuanlan.zhihu.com/p/386328633前言说起 Redisson,比较耳熟能详的就是这个看门狗(Watchdog)机制。本文就一起看看加锁成功之后的看门狗(Watchdog)是如何实现的?加锁成功在前一篇文章中介绍了可重入锁加锁的逻辑,其中RedissonLock#tryAcquireAsync方法是进行异步加锁的逻辑。回顾一下这个方法的入参:waitTime:-1; leaseTime:-1,加锁时未指定锁时间,则为 -1,如..转载 2022-04-17 11:04:13 · 529 阅读 · 0 评论 -
如何保持mysql和redis中数据的一致性?
https://zhihu.com/question/319817091/answer/2428216275问题本人刚简单地学习了一下redis,了解了它的出现背景和基本用法,对于不轻易改变的数据,首次可以将其从mysql中取出存到redis中,以后只要判断redis有没有这个数据,有的话直接拿来用就行了。那么,如果在redis获取这个数据以后,我到mysql中更新了数据,那么redis中的数据不就和mysql不一致了吗?怎么让redis中的数据和mysql保持实时一致呢?回答1转载 2022-04-16 09:47:39 · 1358 阅读 · 0 评论 -
为啥 Redis 使用跳表而不是红黑树
https://www.cnblogs.com/everlose/p/13034513.html开发者所说,他为何选用 skiplistThe Skip listThere are a few reasons:They are not very memory intensive. It's up to you basically. Changing parameters about the probability of a node to have a given number of l.转载 2022-04-16 09:46:40 · 939 阅读 · 0 评论 -
深入理解分布式缓存设计
https://baijiahao.baidu.com/s?id=1721815605125995575&wfr=spider&for=pc来源:https://zhuanlan.zhihu.com/p/55303228前言在高并发的分布式的系统中,缓存是必不可少的一部分。没有缓存对系统的加速和阻挡大量的请求直接落到系统的底层,系统是很难撑住高并发的冲击,所以分布式系统中缓存的设计是很重要的一环。下面就来聊聊分布式系统中关于缓存的设计以及过程中遇到的一些问转载 2022-04-16 09:46:52 · 74 阅读 · 0 评论 -
基于LUA脚本的Redis分布式锁(SpringBoot实现)
https://www.jianshu.com/p/1145cd7e0cf11.前言Redis实现分布式锁,本身比较简单,就是Redis中一个简单的KEY。一般都利用setnx(set if not exists)指令可以非常简单的实现加锁,锁用完后,再调用del指令释放锁。要确保锁可用,一般需要解决几个问题:不能出现死锁情况,一个获得锁的客户端宕机或者异常后,要保障其他客户端也能获得锁。 应用程序通过网络与Redis交互,为避免网络延迟以及获取锁线程与其他线程不冲突,需要保障锁操作的原子转载 2022-04-15 08:54:36 · 452 阅读 · 0 评论 -
springboot2.0 集成redis服务详解,以及 (Lettuce & Jedis)
https://blog.csdn.net/zzhongcy/article/details/102584028前言在实际项目开发过程中,相信很多人都有用到过 redis 这个NoSQL,这篇文章就详细讲讲springboot如何整合 redisRedis 简介简单介绍下Redis:Redis是一个开源的使用 ANSI C语言编写,支持网络,可基于内存也可持久化的日志型,Key-Value数据库,并提供了多种语言的 API ,相比 Memcached 它支持存储的类型相对更多 (字符转载 2022-04-15 09:04:08 · 5600 阅读 · 2 评论 -
jedis线程安全问题
https://blog.csdn.net/weixin_40237626/article/details/117736457前言网上都说jedis实例是非线程安全的,常常通过JedisPool连接池去管理实例,在多线程情况下让每个线程有自己独立的jedis实例,但都没有具体说明为啥jedis实例时非线程安全的,下面详细看一下非线程安全主要从哪个角度来看。jedis类图为什么jedis不是线程安全的?1.共享socket引起的异常由上述类图可知,Jedis类中..转载 2022-04-15 09:04:29 · 2433 阅读 · 5 评论 -
细说Redis分布式锁:setnx/redisson/redlock?了解一波?
https://zhuanlan.zhihu.com/p/111354065?from_voters_page=true&ivk_sa=1024320u正文-开门见山谈起redis锁,下面三个,算是出现最多的高频词汇:setnx redLock redissonsetnx其实目前通常所说的setnx命令,并非单指redis的setnx key value这条命令。一般代指redis中对set命令加上nx参数进行使用,set这个命令,目前已经支持这么多参数可选:SE.转载 2022-04-15 09:04:49 · 1878 阅读 · 0 评论 -
Windows 下 Redis服务自动停止 处理
https://www.icode9.com/content-2-805574.html远程查看服务器,发现Redis 连接出现超时,查看后台发现Redis服务自动停止Category: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddlewareEventId: 1SpanId: 33e119113bac544dTraceId: 9f09a44db75d3844a2d285d94bb53ff3ParentId: 00.转载 2022-04-19 09:51:55 · 2429 阅读 · 0 评论 -
记一篇REDIS布隆过滤器的使用
https://zhuanlan.zhihu.com/p/89883126开场:如何判断一个大集合中是否含有某个元素?背景:为了最大化提升广告转化效果,业务方决定对接巨量引擎,广点通以及快手RTA服务。并针对自身情况决定是否出广告(新用户出,旧用户不出)。大致示意图要求: 1. QPS至少要能撑住30W。2. 接口响应不能超过60ms面临的问题:1.高并发——> 负载均衡这块交由中台完成(部署到k8s, 由40个pod分摊掉流量)。2.低延迟 ——>.转载 2022-04-14 08:11:20 · 594 阅读 · 0 评论 -
布隆过滤器概念及其公式推导
https://blog.csdn.net/gaoyueace/article/details/90410735布隆过滤器概念及其公式推导布隆过滤器概念 数据如何存入布隆过滤器 误判情况 实际应用面试题 公式推导 误判概率即失误率的证明和计算 其他使用场景公式推导内容转自博客布隆过滤器 (Bloom Filter) 详解_MWhzx的博客-CSDN博客布隆过滤器概念数据如何存入布隆过滤器布隆过滤器是由一个很长的二进制矢量和一系列哈希函数组成的。.转载 2022-04-14 08:11:28 · 595 阅读 · 0 评论 -
使用 Redis 统计在线用户人数
https://www.cnblogs.com/mr-amazing/p/6245421.html在构建应用的时候, 我们经常需要对用户的一举一动进行记录, 而其中一个比较重要的操作, 就是对在线的用户进行记录。本文将介绍四种使用 Redis 对在线用户进行记录的方案, 这些方案虽然都可以对在线用户的数量进行统计, 但每个方案都有一些自己特有的操作, 并且各个方案的性能特征以及资源消耗也各有不同。方案 1 :使用有序集合每当一个用户上线时, 我们就执行ZADD命令, 将这个用户以..转载 2022-03-30 09:37:42 · 4198 阅读 · 11 评论 -
缓存穿透,击穿,雪崩是什么?如何避免?
https://www.cnblogs.com/xidianlxf/p/14146821.htmlRedis数据类型Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)缓存穿透,击穿,雪崩是什么?如何避免?缓存处理流程前台请求,后台先从缓存中取数据,取到直接返回结果,取不到时从数据库中取,数据库取到更新缓存,并返回结果,数据库也没取到,那直接返回空结果。一、缓存穿透(数.转载 2022-03-30 08:59:56 · 341 阅读 · 0 评论 -
Redis集群之多机多节点实现方式
https://blog.csdn.net/xiaozhuangyumaotao/article/details/105909225多机多节点集群的配置跟“redis集群单机多节点配置”差不多,所区别的只是redis集群单机多节点配置是在一台机器上配置,而多机是在多个机器上配置,其实在单个机器上配置的时候,为了避免端口冲突,以及配置文件名冲突,要修改的地方还可能更多一点,机器多了反而修改的地方少了,相比来说,多机器配置起来更简单,因此在这里我只是简略的记录一下,详细的流程请参见“redis集群单机多转载 2022-03-29 17:21:21 · 904 阅读 · 0 评论 -
Redis集群搭建(非常详细)
https://blog.csdn.net/qq_42815754/article/details/82912130redis集群搭建在开始redis集群搭建之前,我们先简单回顾一下redis单机版的搭建过程 下载redis压缩包,然后解压压缩文件; 进入到解压缩后的redis文件目录(此时可以看到Makefile文件),编译redis源文件; 把编译好的redis源文件安装到/usr/local/redis目录下,如果/local目录下没有redis目录,会自动新建r转载 2022-03-29 17:11:10 · 19308 阅读 · 11 评论 -
Redisson分布式锁实现
转:分布式锁和Redisson实现概述分布式系统有一个著名的理论CAP,指在一个分布式系统中,最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。所以在设计系统时,往往需要权衡,在CAP中作选择。当然,这个理论也并不一定完美,不同系统对CAP的要求级别不一样,选择需要考虑方方面面。在微服务系统中,一个请求存在多级跨服务调用,往往需要牺牲强一致性老保证系统高可用,比如通过分布式事务,异步消息等.转载 2022-03-26 12:32:47 · 194 阅读 · 0 评论 -
Redis实现分布式锁的7种方案
https://www.cnblogs.com/wangyingshuo/p/14510524.html七种方案前言日常开发中,秒杀下单、抢红包等等业务场景,都需要用到分布式锁。而Redis非常适合作为分布式锁使用。本文将分七个方案展开,跟大家探讨Redis分布式锁的正确使用方式。如果有不正确的地方,欢迎大家指出哈,一起学习一起进步。什么是分布式锁 方案一:SETNX + EXPIRE 方案二:SETNX + value值是(系统时间+过期时间) 方案三:使用Lua脚本(包含SET转载 2022-03-26 12:25:57 · 22126 阅读 · 6 评论 -
Redis 底层数据结构的实现原理是什么?
https://www.zhihu.com/question/484626962Redis面试中经常被问到,Redis效率为什么这么快,很多同学往往回答:① Redis基于内存操作;② Redis是单线程的,采用了IO多路复用技术;除了它是内存数据库,使得所有的操作都在内存上进行之外,还有一个重要因素,它实现的数据结构,使得我们对数据进行增删查改操作时,Redis 能高效的处理。今天来聊下redis的底层数据结构简单动态字符串(Simple dynamic string,SDS)转载 2022-03-26 10:03:34 · 789 阅读 · 0 评论