褚成志 - 云基础设施与AI算力平台专家 | 华为云技术服务专家 | 6年HCS大规模私有云交付与运维经验 | 精通GPU/昇腾异构算力调度、Kubernetes、RDMA高性能网络、Prometheus可观测性 | DeepSeek大模型政务落地核心专家 | 杭州
文章
193
标签
136
分类
7
主页
分类
标签
归档
关于
Logo褚成志的分享站Redis总结 返回首页
搜索
主页
分类
标签
归档
关于

Redis总结

发表于2026-04-09|更新于2026-04-09|后端
|浏览量:

processon

文章作者: 褚成志
文章链接: https://www.chucz.asia/2026/04/09/Redis%E6%80%BB%E7%BB%93/
总结Redis
上一篇
Redis知识点汇总
Redis快速回忆核心数据结构 字符串小于1M,成倍扩容,大于1M,就每次扩容1M,最大512M。 哈希 购物车 列表 集合 有序集合 位图 Bitmap虽然基于String类型,但是可以直接操作位 一个字节8位表示一个用户是数据 使用的时候把握住偏移量即可 集成springboot 一般都会自定义,JDK的序列化方式存的数据不能直接查看 核心原理持久化机制持久化命令bgsave 是异步的 save 是同步的 RDB AOF 混合模式 快照的时候,增量的数据使用AOF的方式 分布式锁演进过程本地锁和分布式锁减库存的时候多线程 无法释放锁的情况处理出现异常的话,就无法释放锁 服务器断了,下面的锁还是无法释放 设置超时时间,但是不能不是原子性操作 合并为原子性操作,但是自己的锁可能被别人释放,因为别人的锁可能过期没了 自己的锁被别人删除怎么办解决办法一:值相同的时候才可以删除掉 解决办法二:给锁续命,防止线程还在执行的时候锁就失效 redission 看门狗机制 **看门狗作用:**每隔十...
下一篇
Redis实现分布式锁以及Redis客户端比较
若锁存在,且唯一标识匹配:则先将锁重入计数减1local counter = redis.call(‘hincrby’, KEYS[1], ARGV[3], -1);if (counter > 0) then – 锁重入计数减1后还大于0:表明当前线程持有的锁还有重入,不能进行锁删除操作,但可以友好地帮忙设置下过期时期 redis.call(‘pexpire’, KEYS[1], ARGV[2]); return 0;else – 锁重入计数已为0:间接表明锁已释放了。直接删除掉锁,并广播解锁消息,去唤醒那些争抢过锁但还处于阻塞中的线程 redis.call(‘del’, KEYS[1]); redis.call(‘publish’, KEYS[2], ARGV[1]); return 1;end; return nil; 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455...
相关推荐
2026-04-09
Redis知识点汇总
Redis快速回忆核心数据结构 字符串小于1M,成倍扩容,大于1M,就每次扩容1M,最大512M。 哈希 购物车 列表 集合 有序集合 位图 Bitmap虽然基于String类型,但是可以直接操作位 一个字节8位表示一个用户是数据 使用的时候把握住偏移量即可 集成springboot 一般都会自定义,JDK的序列化方式存的数据不能直接查看 核心原理持久化机制持久化命令bgsave 是异步的 save 是同步的 RDB AOF 混合模式 快照的时候,增量的数据使用AOF的方式 分布式锁演进过程本地锁和分布式锁减库存的时候多线程 无法释放锁的情况处理出现异常的话,就无法释放锁 服务器断了,下面的锁还是无法释放 设置超时时间,但是不能不是原子性操作 合并为原子性操作,但是自己的锁可能被别人释放,因为别人的锁可能过期没了 自己的锁被别人删除怎么办解决办法一:值相同的时候才可以删除掉 解决办法二:给锁续命,防止线程还在执行的时候锁就失效 redission 看门狗机制 **看门狗作用:**每隔十...
2026-04-09
Redis持久化
对比 AOF 文件的内容是操作命令; RDB 文件的内容是二进制数据。 RDB 快照就是记录某一个瞬间的内存实际数据,而 AOF 文件记录的是命令操作的日志 RDB 恢复数据的效率会比 AOF 高些,因为直接将 RDB 文件读入内存就可以,不需要像 AOF 那样还需要额外执行操作命令的步骤才能恢复数据。 RDB 丢失的数据会更多,因为保存是全量快照,所以频率不能太高否则性能不好,所以会丢失更多数据 AOF 怎么用12345678910111213141516171819// redis.confappendonly yesappendfilename "appendonly.aof"# 同步方式appendfsync everysec# aof重写期间是否同步no-appendfsync-on-rewrite no# 重写触发配置auto-aof-rewrite-percentage 100auto-aof-rewrite-min-size 64mb# 加载aof时如果有错如何处理aof-load-truncated yes # yes表示如果aof尾部文件...
2026-04-09
Linux性能分析、调优套路以及工具总结
分析性能问题从系统资源瓶颈的角度来说,USE 法是最为有效的方法,即从使用率、饱和度以及错误数 这三个方面,来分析 CPU、内存、磁盘和文件系统 I/O、网络以及内核资源限制等各类软 硬件资源。 从应用程序瓶颈的角度来说,资源瓶颈跟系统资源瓶颈,本质是一样的。依赖服务瓶颈,你可以使用全链路跟踪系统进行定位。而应用自身的问题,你可以通过系统调用、热点函数,或者应用自身的指标监控以及日志 监控等,进行分析定位。 值得注意的是,虽然我把瓶颈分为了系统和应用两个角度,但在实际运行时,这两者往往是 相辅相成、相互影响的。系统是应用的运行环境,系统的瓶颈会导致应用的性能下降;而应 用的不合理设计,也会引发系统资源的瓶颈。我们做性能分析,就是要结合应用程序和操作系统的原理,揪出引发问题的真凶。 系统资源瓶颈USE 法,即使用 率、饱和度以及错误数这三类指标来衡量。 资源列表: CPU、内存、磁盘和文件系统以及网络等,都是最常见的硬件资源。 文件描述符数、连接跟踪数、套接字缓冲区大小等,则是典型的软件资源。 收到监控系统告警时,就可以对照这些资源列表,再根据指标的不同来进行定...
2026-04-09
布隆过滤器
布隆过滤器布隆过滤器由「初始值都为 0 的位图数组」和「 N 个哈希函数」两部分组成。当我们在写入数据库数据时,在布隆过滤器里做个标记,这样下次查询数据是否在数据库时,只需要查询布隆过滤器,如果查询到数据没有被标记,说明不在数据库中。 第一步,使用 N 个哈希函数分别对数据做哈希计算,得到 N 个哈希值; 第二步,将第一步得到的 N 个哈希值对位图数组的长度取模,得到每个哈希值在位图数组的对应位置。 第三步,将每个哈希值在位图数组的对应位置的值设置为 1; 查询的时****候只要有一个为 0,就认为数据 x 不在数据库中。 没有的一定没有,有的也可能没有 黑名单,爬虫去重 只有加入和查询,不要求删除, 极大减少内存, 但是必须允许一定程度的失误率,会误杀好人,但是不会漏杀坏人 布隆过滤器是一种数据结构,比较巧妙的概率型数据结构(probabilistic data structure),特点是高效地插入和查询,可以用来告诉你** “某样东西****一定不存在或者可能存在****”。** 如果存在那就是可能存在(hash的碰撞) 如果不存在那就一定不存在 相比于传统的...
2026-04-09
Redis核心数据类型的底层编码(C源码)(重要)
Redis K-V 底层设计原理:字典hashtablekey:string val:string、hash、list、set、sorted set map 就是字典,还要支持海量数据的存储,查找和插入删除(hashtable) hashtable 里面 hash(key) % hashtable.size ,最后的得到的就是[0, hashtable.size - 1] hash碰撞的时候,线性探测或者链表法。Redis 使用的是链表法 注意这个hashtable里面的value的类型是五种常见类型谁都可以放,因为最后都是使用指针指向的,value的包装类里面会执行是什么数据类型。 redisDb–dict–dictht–dictEntry–redisObject Redis 渐进式rehash及动态扩容机制如图所示, 扩容时机:在使用的容量是大小的一样的时候就会扩容, 扩容大小:扩容的时候变为原来的2倍, 渐进式迁移:新建数组之后,数据迁移的时候,一个链表上的数据是一个桶为单位转移的,不能一下全部转移会导致单线程阻塞,所以有了渐进式rehash的设计,dict字典包...
2026-04-09
设计模式、设计原则、重构与编码规范(设计模式之美笔记)
设计模式要干的事情就是对复杂解耦。利用更好的代码结构将一大坨代码拆分成职责更单一的小类,让其满足高内聚低耦合等特性。 创建型模式是将创建和使用代码解耦,结构型模式是将不同的功能代码解耦,行为型模式是将不同的行为代码解耦。 而解耦的主要目的是应对代码的复杂性。设计模式就是为了解决复杂代码问题而产生的。 为什么设计模式? 面试会问 提高复杂代码的设计和开发能力。避免只是框架用的溜。 如何分层、分模块、分类 每个类应该有哪些属性和方法 怎么设计类之间的交互,用继承还是组合 使用接口还是抽象类,怎么做到解耦、高内聚和低耦合 该用单例模式还是静态方法 用工厂模式创建对象还是直接new出来 如何避免使用了设计模式提高扩展性的同时降低了可读性 告别写被人吐槽的烂代码,团队里面的代码标杆,不经意间写出来的代码,都能作为同事学习、临摹的范例。 读源码的时候根据设计模式推测作者的思路,做到事半功倍。 如何评价代码质量的好坏?即使一段代码的可扩展性很好,但可读性很差,那我们也不能说这段代码质量高。常见的评价指标: 可维护性:分层清晰、模块化好、高内聚低耦合、遵从基于接口而非实现编程的设...
avatar
褚成志
褚成志的技术博客,分享Java、Kubernetes、Linux、Redis、Spring、云原生等技术
文章
193
标签
136
分类
7
Follow Me
公告
👋 你好,我是褚成志,一名专注于云原生与后端架构的工程师。
热爱 Java、Kubernetes、Linux、Redis、Spring 等技术领域,持续探索 AGI 与智能化运维的边界。
这里记录我的技术思考与实践总结,欢迎交流!
最新文章
Spring AI 框架中如何集成 MCP?2026-04-10
【从0到1构建一个ClaudeAgent】工具与执行-工具2026-04-10
Ansible常用模块分类2026-04-09
CDN部署2026-04-09
Dubbo SPI机制2026-04-09
© 2025 - 2026 By 褚成志
搜索
数据加载中