去年我写过一个《阿里云Redis开发规范》,在网上转载很多,但其实说心里话,我并不认为写的多好,受制一些客观因素和篇幅,有些不够细致和深入,所以想在公众号里详细解析下,希望对大家有帮助。本篇是第一篇:由键名设计想到的SDS内存优化原文1.key名设计◆(1)【建议】:可读性和可管理性以业务名(或数据库名)为前缀(防止key冲突),用冒号分隔,比如业务名:表名:id◆(2)【建议】:简洁性保证语义的前提下,控制key的长度,当key...
2022-04-16 12:15:48 7126浏览 0点赞 0回复 0收藏
最近经常有人问我,我这边学习Redis都有哪些资料,能不能发他们一下。作为一个习惯”慢慢啃”技术学习的人,我确实积累了大量资料,这里可以介绍给大家。一、图书(按照发布时间排序)1.《Redis设计与实现》,2014,黄健宏,机械工业出版社了解Redis源码和原理的公认好书,虽然至今已时隔5年,Redis的版本发生了很多变化,但仍然不会觉得落时了。2.《Redis入门指南》第二版,2015,李子骅,人民邮电出版社这本书是我当年Redis的...
2022-04-16 11:48:54 6261浏览 0点赞 0回复 0收藏
去年我写过一个《阿里云Redis开发规范》,在网上转载很多,但其实说心里话,我并不认为写的多好,受制一些客观因素和篇幅,有些不够细致和深入,所以想在公众号里详细解析下,希望对大家有帮助。本篇是第二篇:老生常谈的bigkey原文【强制】:拒绝bigkey(防止网卡流量、慢查询)string类型控制在10KB以内,hash、list、set、zset元素个数不要超过5000。反例:一个包含200万个元素的list。非字符串的bigkey,不要使用del删除,使...
2022-04-16 11:28:41 6528浏览 0点赞 0回复 0收藏
去年我写过一个《阿里云Redis开发规范》,在网上转载很多,但其实说心里话,我并不认为写的多好,受制一些客观因素和篇幅,有些不够细致和深入,所以想在公众号里详细解析下,希望对大家有帮助。本篇是第三篇:一个Redis实例存储多少个键值对比较合适。无原文这个在当时的文章里没有讨论,因为这个问题很难绝对化,但背后的知识还是很有讨论价值的,我们来看一段对话:解析一、存在哪?1.哈希表(hashtable)要知道能存多少,首先...
2022-04-16 11:05:06 1.4w浏览 0点赞 0回复 0收藏
声明:本文是之前在云栖社区写过的,不过被转载过,因此不能标记原创了。背景Java的BIO客户端Jedis虽然在很多地方都比不上NIO客户端Lettuce,但它的应用依然广泛。合理的JedisPool资源池参数设置能为业务使用Redis保驾护航,本文将对JedisPool的使用、资源池的参数进行详细说明,最后给出“最合理”配置。一、使用方法以官方的2.9.0为例子(JedisRelease),Maven依赖如下:Jedis使用apachecommonspool2对Jedis资源池进行管理,所...
2022-04-16 10:33:08 9908浏览 0点赞 0回复 0收藏
之前白馨(陌陌技术保障部存储工程师)在Redis技术交流群里,总结了一下Redis从2.84.0关于过期键相关的fix记录,非常有帮助,但有些东西未尽详细,本文将进行详细说明。先从一个问题来看,运行环境如下:从下图中可以看到,在从节点gethello非空,在主节点gethello为空,之后从节点gethello为空,经排查主从同步offset基本正常,但出现了主从不一致。原因先不说,本文来探讨下Redis2.84.0版本迭代中,针对过期键的fix,看看能不能...
2022-04-15 16:03:21 5214浏览 0点赞 0回复 0收藏
一、缓存无底洞现象生活中对无底洞的描述大概是这样:不断的投入,但没什么产出,对于键值类型的分布式缓存来说也有类似的问题,来看下面一段对话:这个其实就是典型的缓存无底洞问题,为了满足数据量的增长以及整体性能提升,集群规模一直变大,但批量操作反而性能下降,现在管理的Redis接近了50万个实例,这种问题还是比较多的其实早在2010年,Facebook已经遇到了类似这样的问题,当时Facebook的Memcached节点已经达到了3000...
2022-04-15 15:22:41 6054浏览 0点赞 0回复 0收藏
一、背景目前快手有70w+的Redis实例,在线上的Redis集群,我们经常会碰到以下的一些情况:(1)由于键值设计不合理或者业务特性导致的热点问题(集群整体QPS不高,但是集群内某个实例的请求特别高),严重影响业务侧请求的返回时间(2)集群内某个实例直连集群连接数过多,单线程模型处理缓慢,影响其他的请求(3)集群内某个实例网络不稳定后者pipeline个数较多,导致协议解析频繁调用,导致cpu时间占用过长,影响其他的客户端...
2022-04-15 14:55:18 6611浏览 0点赞 0回复 0收藏
近些年来各路KV缓存强势崛起,尤其Redis一骑绝尘,很多新进的程序员可能都没听说过Memcached,还有很多老程序员觉得Memcached不行:功能少,不持久化,高可用差,但事实并非如此,本文将对Redis和Memcached进行对比看看Memcached是不是真的”一无是处“了下面我们来看一个场景业务同学A:你好,我申请了一个20G,100000QPS的Memcached,麻烦审批下?业务同学B:hello,请问什么时候用Redis?什么时候用Memcached?业务同学C:Mem...
2022-04-15 14:24:24 5006浏览 0点赞 0回复 0收藏
最近一年多开始“搞”ES(ElasticSearch),遇到了很多“坑”,希望和大家也一起分享下,由于接触时间不长,如有问题麻烦联系我及时指出。ElasticSearch除了在日志场景(监控、数据分析、debug)等场景大量使用以外,最近一年多在很多核心上的线上业务(譬如电商业务)大量使用,目前接近了5000个节点,目前在dbranking(20201124日),ElasticSearch在searchengine中常年第一:对于MySQL、Redis这类存储缓存许多开发同学多有很强...
2022-04-15 12:23:52 6041浏览 0点赞 0回复 0收藏
一、Redis6.2RC1发布2020年12月14日,Redis发布了6.2的第一个RC版本,是Redis作者antirez”辞职“后,由Redis核心团队发布的第一个版本。该版本没有太多惊艳新的特性(比如Redis6.0提供了多线程、ACL、RESP3等等),但提供了很多新的命令和功能改进,其中比较重要的有几个:•一些新的命令:SMISMEMBER、ZMSCORE、LMOVE、GEOSEARCH(支持按照矩形搜索,阿里云团队开发)等•rehash可能造成的evict问题(小概率问题,但...
2022-04-15 11:40:34 5708浏览 0点赞 0回复 0收藏
如果你是一位后端工程师,面试时八成会被问到Redis,特别是那些大型互联网公司,不仅要求面试者能简单使用Redis,还要深入理解其底层实现原理,具备解决常见问题的能力。可以说,熟练使用Redis就是后端工程师的必备技能。但我发现,在工作或面试时,大家还是会有这样那样的疑问,比如:如何用Redis实现分布式锁?Redis怎样处理过期键?缓存雪崩、穿透、热点问题怎么解决?持久化、集群方案怎么选择?如何优雅地给Redis做键值分...
2022-04-15 11:30:27 5382浏览 0点赞 0回复 0收藏
Redis作为稳居世界排名第一的键值内存数据库,同时也是最受欢迎的开源缓存产品,是应对高并发、大流量、低延迟业务场景的不二选择。2020年7月,伴随着Redis作者SalvatoreSanfilippo辞去项目领导者职务,Redis正式交付给社区,通过核心团队的机制来进行运作。阿里云技术专家赵钊(花名:仲肥)受邀成为全球5位核心成员之一,同时赵钊也是唯一一位来自中国乃至亚太市场的成员。他从Redis4.0开始,参与到Redis社区的开发,同时也是...
2022-04-15 11:18:20 6228浏览 0点赞 0回复 0收藏
Kvrocks是基于RocksDB之上兼容Redis协议的NoSQL存储服务,设计目标是提供一个低成本以及大容量的Redis服务,作为Redis在大数据量场景的互补服务,选择兼容Redis协议是因为简单易用且业务迁移成本低。目前线上使用的公司包含:美图、携程、百度以及白山云等,在线上经过两年多大规模实例的验证。项目核心功能包含:•兼容Redis协议•支持主从复制•支持通过Namespace隔离不同业务的数据•高可用,支持RedisSentine...
2022-04-15 10:41:43 8980浏览 0点赞 0回复 0收藏
经常能碰到这样的问题:Redis的持久化功能被夸大和误解了,这个问题我解释过无数遍了,早就想写个说明了,今天“忍不了”,和大家聊聊我的一些认知,欢迎大佬们吐槽。一、Redis”3“种持久化方式1.RDB简单来说,对Redis做一个快照(利用fork)保存在磁盘上(1)优点:•结构紧凑体积小,加载速度快(相比AOF)•可以做定期备份:例如低峰期(顺便搞个数据分析也行)(2)缺点:•动作大、消耗大:全量操作对于磁盘、CPU、...
2022-04-14 21:33:51 6281浏览 0点赞 0回复 0收藏
由于诸多原因,现在已经很少能长篇大论介绍Redis的相关技术,但日常工作以及脑子中经常想整理和总结一些Redis的点点滴滴,既能帮助自己记录问题,又能帮助他人减少碰到类似问题,于是有个想法,准备写一个小的系列:Redis小功能大用处。本文将介绍Redis5后一个新的配置replicaignoremaxmemory(默认开启)一、问题1.现象:•缓存场景:允许逐出,常年逐出。•主从不一致:主从键值个数不一致。•故障切换后,命中率下...
2022-04-14 20:56:16 6712浏览 0点赞 0回复 0收藏
不久前Kvrocks发布2.0.5版本,该版本不仅增加了许多新功能,还使用了RocksDB的新特性大大提升了性能。本文将重点介绍Kvrocks是如何使用这些特性来提升磁盘类型Redis服务的性能,希望能给大家带来一些参考。背景在介绍性能优化之前,首先简单介绍一下Kvrocks是如何与RocksDB交互的。从实现上来看,Kvrocks会将Redis数据类型编码成KeyValue数据写入RocksDB的不同ColumnFamily(以下简称CF)中。目前主要有以下几种CF:•Metad...
2022-04-14 16:47:02 8665浏览 0点赞 0回复 0收藏
本文将主要分析Redis主从复制中的内存消耗过多和堵塞问题,以及Redis7.0(尚未发布)的共享复制缓冲区方案是如何解决这些问题的。1Redis主从复制原理简介尽管本文的目的不是讲解Redis主从复制的原理,但在开始进入主题之前,我们先简单回顾一下Redis主从复制的基本原理。Redis的主从复制主要分为两种情况:•全量同步当主库收到从库的同步请求时,如果从库的复制历史与主库不一致,或者未能在复制积压区中找到从库请求的同步...
2022-04-14 16:16:43 6248浏览 0点赞 0回复 0收藏
虎年除夕(20220131),Redis7.0RC1发布,这是新的Redis团队开发的第2个版本(6.2和7.0),该版本提供了很多新的特性、做了很多改进(尤其是在性能和内存优化上,关键字Significant),当然也修复了很多小bug,总结下重点如下:•RedisFunction:新的服务脚本编程模式•内存和性能优化:非用户功能,但对性能和内存优化做了重大改进(搜关键字Significant)•新的AOF模式:切片式AOF,减少AOF重写的问题以及提供一些新的...
2022-04-14 15:55:05 7078浏览 0点赞 0回复 0收藏
dict是Redis的基础数据结构,Redis的键值、hashsetzset数据结构均用到了dict。本文介绍了Redis7在dict上的优化,思路清晰简单但效果明显,值得重点关注(降本增效)。一、优化前的dict结构7.0之前:dict内部包含了两个dictht相关代码:二、Redis7.0的相关优化•去掉privdata•去掉dictht,相关元数据放到了dict中。相关代码变为:•dicththt[2]用dictEntryhttable[2]代替•原来两个dictht的used用unsignedlonghtu...
2022-04-14 15:29:38 9147浏览 0点赞 0回复 0收藏