随笔分类 -  redis

摘要:Redis突然性能变慢可能由多种因素导致,以下是一些常见的原因及其解决方案: 一、大键(Bigkey)问题 原因:如果Redis实例中存储了bigkey,那么在淘汰删除bigkey释放内存时,会耗时比较久,从而影响性能。 解决方案:避免存储bigkey,降低释放内存的耗时。可以使用Redis提供的一 阅读全文
posted @ 2025-01-14 10:24 姚春辉 阅读(241) 评论(0) 推荐(0)
摘要:Redis缓存淘汰策略是在Redis内存达到最大限制时,决定哪些数据需要被移除以便为新数据腾出空间的策略。这些策略旨在保证Redis在有限的内存环境下能够平稳运行。以下是Redis提供的几种主要淘汰策略: 一、不淘汰策略 noeviction:当内存达到限制时,Redis不再接受新的写入请求(包括插 阅读全文
posted @ 2025-01-14 10:22 姚春辉 阅读(287) 评论(0) 推荐(0)
摘要:Redis大键问题是一个常见的性能瓶颈和潜在的问题源。以下是对Redis大键问题的详细解析: 一、什么是Redis大键 Redis大键并不是指存储在Redis中的某个Key的大小超过一定的阈值,而是指该Key所对应的value过大。对于string类型来说,一般情况下超过10KB则被认为是大键;对于 阅读全文
posted @ 2025-01-14 10:19 姚春辉 阅读(111) 评论(0) 推荐(0)
摘要:1 https://gitee.com/kekingcn/spring-boot-klock-starter 2 锁概念 2.1 公平锁:公平锁是指多个线程按照申请锁的顺序来获取锁,线程直接进入队列中排队,队列中的第一个线程才能获得锁。公平锁的优点是等待锁的线程不会饿死。缺点是整体吞吐效率相对非公平 阅读全文
posted @ 2022-05-23 15:02 姚春辉 阅读(259) 评论(0) 推荐(0)
摘要:基本原理 我们可以同时去一个地方“占坑”,如果占到,就执行逻辑。否则就必须等待,直到释放锁。“占坑”可以去redis,可以去数据库,可以去任何大家都能访问的地方。等待可以自旋的方式。 阶段一 public Map<String, List<Catalog2Vo>> getCatalogJsonDbW 阅读全文
posted @ 2022-05-23 14:53 姚春辉 阅读(604) 评论(0) 推荐(0)
摘要:引言 讲了几天的数据库系列的文章,大家一定看烦了,其实还没讲完。。。(以下省略一万字)。今天我们换换口味,来写redis方面的内容,谈谈热key问题如何解决。其实热key问题说来也很简单,就是瞬间有几十万的请求去访问redis上某个固定的key,从而压垮缓存服务的情情况。其实生活中也是有不少这样的例 阅读全文
posted @ 2021-12-07 10:46 姚春辉 阅读(255) 评论(0) 推荐(0)
摘要:首先是项目地址: https://github.com/maqiankun/distributed-id-redis-generator 关于Redis集群生成分布式ID,这里要先了解redis使用lua脚本的时候的EVAL,EVALSHA命令: https://www.runoob.com/red 阅读全文
posted @ 2021-11-24 14:21 姚春辉 阅读(434) 评论(0) 推荐(0)
摘要:一、主从复制模式 主数据库可进行读写,当写操作导致数据变化时会自动将数据同步到从数据库;从数据库一般是只读的,并接受主数据库同步过来的数据 1、工作原理 (1)Slave从节点服务启动并连接到Master之后,它将主动发送一个SYNC命令(2)Master服务主节点收到同步命令后,开始执行BGSAV 阅读全文
posted @ 2021-05-31 17:06 姚春辉 阅读(1502) 评论(0) 推荐(0)
摘要:之前一直在用Spring Cache进行接口数据的缓存,主要是Spring Cache在对具体key缓存失效时间的设置不是很方法,还要自己去扩展,无意中发现了阿里的JetCache。大部分的需求都能满足,并且有一些很实用的功能,今天给大家介绍下。 JetCache是一个基于Java的缓存系统封装,提 阅读全文
posted @ 2021-05-31 16:46 姚春辉 阅读(5735) 评论(0) 推荐(0)
摘要:话说,中间件的选择上,Spring(SpringBoot)一直是业界的风向标。比如Spring一直使用「Jackson」,而没有使用Gson和fastjson。SpringBoot2.0默认数据库连接池从TomcatPool换到了「HikariCP」。在本地缓存方面,SpringFramework5 阅读全文
posted @ 2021-05-31 15:17 姚春辉 阅读(1006) 评论(0) 推荐(0)
摘要:在多线程高并发场景中往往是离不开cache的,需要根据不同的应用场景来需要选择不同的cache,比如分布式缓存如redis、memcached,还有本地(进程内)缓存如ehcache、GuavaCache、Caffeine、LocalCache等。 一、ehcache 在Java项目广泛的使用。它是 阅读全文
posted @ 2021-05-31 15:16 姚春辉 阅读(1535) 评论(0) 推荐(0)
摘要:1. 缓存淘汰算法1.1. FIFO先进先出:最先进入的缓存被最先淘汰掉,这个基本不会有人用来做缓存 1.2. LRU最近最少未使用:每次访问就把这个元素放到队列头部,队列满了淘汰队列尾的元素,也就是淘汰最长时间没有被访问的。 缺点也是很明显的,某一时刻大量数据的到来容易把热点数据挤出缓存,而这些数 阅读全文
posted @ 2021-05-31 14:49 姚春辉 阅读(558) 评论(0) 推荐(0)
摘要:目录 1、布隆过滤器使用场景 2、布隆过滤器简介 3、Redis实现布隆过滤器 ①、bitmaps ②、Redisson 4、guava 工具 本篇博客我们主要介绍如何用Redis实现布隆过滤器,但是在介绍布隆过滤器之前,我们首先介绍一下,为啥要使用布隆过滤器。 1、布隆过滤器使用场景 比如有如下几 阅读全文
posted @ 2021-03-09 16:39 姚春辉 阅读(202) 评论(0) 推荐(0)
摘要:Redis 集群模式的工作原理能说一下么?在集群模式下,Redis 的 key 是如何寻址的?分布式寻址都有哪些算法?了解一致性 hash 算法吗? 面试官心理分析 在前几年,Redis 如果要搞几个节点,每个节点存储一部分的数据,得借助一些中间件来实现,比如说有 codis ,或者 twempro 阅读全文
posted @ 2021-02-24 16:20 姚春辉 阅读(491) 评论(0) 推荐(0)
摘要:Redis 的持久化有哪几种方式?不同的持久化机制都有什么优缺点?持久化机制具体底层是如何实现的? 面试官心理分析 Redis 如果仅仅只是将数据缓存在内存里面,如果 Redis 宕机了再重启,内存里的数据就全部都弄丢了啊。你必须得用 Redis 的持久化机制,将数据写入内存的同时,异步的慢慢的将数 阅读全文
posted @ 2021-02-23 17:20 姚春辉 阅读(228) 评论(0) 推荐(0)
摘要:Redis 主从架构 单机的 Redis,能够承载的 QPS 大概就在上万到几万不等。对于缓存来说,一般都是用来支撑读高并发的。因此架构做成主从(master-slave)架构,一主多从,主负责写,并且将数据复制到其它的 slave 节点,从节点负责读。所有的读请求全部走从节点。这样也可以很轻松实现 阅读全文
posted @ 2021-02-23 14:55 姚春辉 阅读(154) 评论(0) 推荐(0)
摘要:如何保证 redis 的高并发和高可用?redis 的主从复制原理能介绍一下么?redis 的哨兵原理能介绍一下么? 面试官心理分析 其实问这个问题,主要是考考你,redis 单机能承载多高并发?如果单机扛不住如何扩容扛更多的并发?redis 会不会挂?既然 redis 会挂那怎么保证 redis 阅读全文
posted @ 2021-02-23 14:20 姚春辉 阅读(152) 评论(0) 推荐(0)
摘要:Redis 的过期策略都有哪些?内存淘汰机制都有哪些?手写一下 LRU 代码实现? 面试官心理分析 如果你连这个问题都不知道,上来就懵了,回答不出来,那线上你写代码的时候,想当然的认为写进 Redis 的数据就一定会存在,后面导致系统各种 bug,谁来负责? 常见的有两个问题: 往 Redis 写入 阅读全文
posted @ 2021-02-23 10:20 姚春辉 阅读(87) 评论(0) 推荐(0)
摘要:Redis 都有哪些数据类型?分别在哪些场景下使用比较合适? 面试官心理分析 除非是面试官感觉看你简历,是工作 3 年以内的比较初级的同学,可能对技术没有很深入的研究,面试官才会问这类问题。否则,在宝贵的面试时间里,面试官实在不想多问。 其实问这个问题,主要有两个原因: 看看你到底有没有全面的了解 阅读全文
posted @ 2021-02-23 10:04 姚春辉 阅读(218) 评论(0) 推荐(0)
摘要:Redis 和 Memcached 有什么区别?Redis 的线程模型是什么?为什么 Redis 单线程却能支撑高并发? 面试官心理分析 这个是问 Redis 的时候,最基本的问题吧,Redis 最基本的一个内部原理和特点,就是 Redis 实际上是个单线程工作模型,你要是这个都不知道,那后面玩儿 阅读全文
posted @ 2021-02-23 09:33 姚春辉 阅读(128) 评论(0) 推荐(0)