自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 Redis都要老了,你还在用什么古董客户端?

前几日,Redis 创始人 Antirez 在他的个人博客上宣布将结束自己的 Redis 之旅! 大神累了,Redis老了,但Redis依旧很火。 Redis的Java客户端有很多,比如jedis、redisson、lettuce等。 那大家都在用啥呢? 今天我做了一个小调查。下面是统计结果。 可以看到jedis以绝对的优势占据了榜首。 下面简单的分析一小下。 jedis jedis和redis只相差1个字母。我通常把它叫做redis和Java的合体。它有以下特点: 非常的轻...

2021-06-16 18:54:45 95

原创 新一代缓存Caffeine,速度确实比Guava的Cache快

我想把记忆缓存起来,等再次见到你,就能够很快认出你。 能够说出这么有哲理的话,得益于我对缓存的理解,以及对它的看重。没有了缓存,我的人生就没有了意义。 缓存是非常重要的,工作中大部分工作可以说是和缓存打交道。由于使用广泛,所以针对缓存系统的任何优化,如果能够提高一丁点儿性能,就会让人无比兴奋。 很长一段时间,我都在用Guava的LoadingCache。它和ConcurrentHashMap是非常像的,但在其上封装了一些好用的逐出策略和并发优化,就显得好用的多。 今天主要说的是Caffeine...

2021-06-15 18:49:52 533

原创 Redis的zset有多牛?请把耳朵递过来

本篇文章很短,但信息量很大,是关于redis的zset。我来分享一点遇到过的线上数据,或许对你的决策有帮助。 redis支持一个数据结构,叫做zset,也就是有序的列表。当然redis也不能滥用,可以看我以前的规范文章:《这可能是最中肯的Redis规范了》(opens new window) 忘了zset是个啥的同学可以看这张gif图。 通过它,可以实现游戏排行榜一类的功能,或者实现Topx这样的需求,也能精准的让用户在海量数据中找到自己的位置。 zset的底层结构是跳跃表,而与之类似...

2021-06-15 18:47:25 475

原创 神奇的闪电缓存,带系统飞

缓存,在高并发的应用中,用的那是相当多。为什么?就因为I/O实在是慢!为了解决不同组件之间的速度差,大家都寄希望于加入一个中间层,期待产生一些魔幻的事。 就拿Redis来说,火的就一塌糊涂,但中间会产生很多数据同步和数据一致性问题。有的牛x公司嫌烦,同时有钱,干脆干掉缓存后面的DB,直接把所有的数据放在了缓存上。哦不,这时候缓存已经不叫做缓存,应该叫做快存,因为它最终是要通过rdb落地的。 看到这里,先不要怀疑事实的正确性。有些公司的业务,确实不需要什么关系型数据库,一个redis就能玩得转。 ...

2021-06-09 17:18:51 146

原创 和 杠精 聊Redis多线程

周末被一位小同学憋的很窝火。 他要和我探讨一下,redis到底是多线程的还是单线程的。这个问题本来比较好解释,但我遇到的却是一个杠精。 答案是显而易见的:redis6,逃不过真香定理,引入了多线程;而在redis6之前,却是单线程的。 也就是说,这不是一个是和否的问题,还涉及到第二维度的版本参与。 可是,这位同学要打我的脸。不知道小姐姐的脸皮很嫩么?摸不得。 “照你的逻辑,redis5是单线程的了?” “是的。” “那下面这张截图是怎么回事?” 同学甩给我一张图,并送来一个鄙视的眼神。 ...

2021-06-09 17:18:37 113

原创 与亲生的Redis Cluster,来一次亲密接触

笔者曾经维护过上千个redis实例,这些实例采用的简单主从结构,集群方案主要是客户端jar包。刚开始,个人并不是太喜欢redis cluster,因为它的路由实在是太死板,运维复杂。 但官方在推这个东西,注定了它的应用越来越广泛,这在平常的交流中就能够发现。虽然有这样那样的缺点,但总抵挡不了权威推动的浪潮。随着redis cluster越来越稳定,是时候和redis cluster来一次灵魂交流了。 简介 redis cluster是亲生的集群方案,目前,在高可用和稳定性方面,都有了很大的进步。...

2021-06-07 19:00:18 221 3

原创 这可能是最中肯的Redis规范了

redis功能强大,数据类型丰富,再快的系统,也经不住疯狂的滥用。通过禁用部分高风险功能,并挂上开发的枷锁,业务更能够以简洁、通用的思想去考虑问题,而不是绑定在某种实现上。 Redis 根据不同的用途,会有不同的持久化策略和逐出策略,所以,在使用和申请 Redis 集群前,请明确是用来做缓存还是存储。redis 的集群有主从和 cluster 两种模式,各有优缺点。以下规范不区分集群模式,我们分别从使用场景和操作限制两方面说明。 使用规范 冷热数据区分 虽然 Redis支持持久化,但将所有...

2021-06-03 19:17:03 166

原创 Redis,就是这么朴实无华

Redis是2009年发布的,到今天已经超过10岁了。作为必备技能之一,关于它也有聊不完的话题。本文中的任何一个点,都可以展开,完成一篇中等规模的文章。 交流和面试时,你需要用最精准的语言进行描述,那么本文比较适合你。 redis能力: 1 0W/s QPS (redis-benchmark) 1w+ 长链接 (netstat / ss) 最复杂的Zset 6kw数据 写入1k/s 读取5k/s 平均耗时5ms 持久化 (rdb) 1. 基本概览 学习一门新语言,重要的是掌握它的基本数据...

2021-06-03 19:16:31 157

原创 冷门instrument包,功能d炸天

文中代码示例工程如下,更多参考btrace和arthas: https://github.com/sayhiai/example-javaagent 5版本以后,jdk有一个包叫做instrument,能够实现一些非常酷的功能。市面上一些APM工具,就是通过它来进行的增强。 这是基础架构的必备技能,但对业务开发来说并不是。许多面试会问到这个知识点,并不是因为将来会用到,而是因为你说对jdk比较熟悉,他想杀杀你的威风。 不会用没问题,但你要说不知道,就过分了点。 javaagent介绍 ...

2021-06-02 17:41:18 183

原创 为什么给Java代码加个空行,class文件就翻脸不认人了?

public class HelloWorld { public static void main(String[] args) { System.out.println("love dog"); } } 为了写出这几行优美的代码,主要是为了让它输出的优美动听的乐符,我下了一番功夫。你不要觉得简单,我把它打印出来给普通的保洁阿姨去看,阿姨竟然连我都认不出来。别说代码了,中英文混血,就秒杀一大堆高干分子。 想说爱我就那么难么?怎么这么多的废话呢?这次探讨的主要问题...

2021-06-02 17:41:01 140

原创 JAVA堆外内存排查小结

简介 JVM堆外内存难排查但经常会出现问题,这可能是目前最全的JVM堆外内存排查思路。 通过本文,你应该了解: pmap 命令 gdb 命令 perf 命令 内存 RSS、VSZ的区别 java NMT 起因 这几天遇到一个比较奇怪的问题,觉得有必要和大家分享一下。我们的一个服务,运行在docker上,在某个版本之后,占用的内存开始增长,直到docker分配的内存上限,但是并不会OOM。版本的更改如下: 升级了基础软件的版本 将docker的内存上限由4GB扩展到8GB 上上...

2021-06-01 19:05:35 448

原创 为什么给Java代码加个空行,class文件就翻脸不认人了?

public class HelloWorld { public static void main(String[] args) { System.out.println("love you"); } } 为了写出这几行优美的代码,主要是为了让它输出的优美动听的乐符,我下了一番功夫。你不要觉得简单,我把它打印出来给普通的保洁阿姨去看,阿姨竟然连我都认不出来。别说代码了,中英文混血,就秒杀一大堆高干分子。 想说爱我就那么难么?怎么这么多的废话呢?这次探讨的主要问题...

2021-06-01 19:05:13 126

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除