Redis实战
文章平均质量分 83
Redis源码与应用解读
邴越
电商技术专家,阿里云MVP,任职淘宝、美团,著有《分布式技术原理与实战》,拉勾网、InfoQ讲师、人人都是产品经理专栏作者,分享互联网架构,关注认知升级
展开
-
Redis使用lua脚本实现库存扣减
Lua 允许您在 Redis 中运行部分应用程序逻辑。这样的脚本可以跨多个键执行条件更新,可能以原子方式组合几种不同的数据类型。原创 2023-05-15 11:05:15 · 1269 阅读 · 0 评论 -
Redis的缓存策略和主键失效机制
作为缓存系统都要定期清理无效数据,就需要一个主键失效和淘汰策略。1.EXPIRE主键失效机制在Redis当中,有生存期的key被称为volatile,在创建缓存时,要为给定的key设置生存期,当key过期的时候(生存期为0),它可能会被删除。(1)影响生存时间的一些操作生存时间可以通过使用 DEL 命令来删除整个 key 来移除,或者被 SET 和 GETSET 命令覆盖...原创 2016-04-21 10:48:00 · 313 阅读 · 0 评论 -
Redis持久化之RDB高频问题
bgsave 子进程是由主线程 fork 生成的,可以共享主线程的所有内存数据。bgsave 子进程运行后,开始读取主线程的内存数据,并把它们写入 RDB 文件。原创 2023-05-07 15:06:28 · 544 阅读 · 0 评论 -
Redis持久化之AOF日志高频问题
AOF 日志正好相反,它是写后日志,“写后”的意思是 Redis 是先执行命令,把数据写入内存,然后才记录日志。原创 2023-05-07 14:47:53 · 594 阅读 · 0 评论 -
一致性 Hash 算法 及Java TreeMap 实现
Redis Cluster 通过分片的方式将整个缓存划分为 16384 个槽,每个缓存节点就相当于 Hash 换上的一个节点,接入集群时,所有实例都将均匀占有这些哈希槽,当需要查询一个 Key 是,首先根据 Key 的 hashcode 对 16384 取余来得到 Key 属于哪个槽,并映射到缓存实例上。当缓存服务器需要扩容的时候,只需要将新加入缓存服务器的 Hash 值放入一致性 Hash 环中,由于 Key 是顺时针查找距离其最近的节点,因此新加入的几点只影响整个环中的一小段。原创 2023-04-22 21:58:19 · 856 阅读 · 0 评论 -
Redis 为何使用Nearly LRU 算法淘汰数据
Redis的内存空间宝贵,维护LRU的双向链表需要使用比较多的额外空间,所以换了个实现原创 2023-04-21 18:26:27 · 649 阅读 · 0 评论 -
Redis可以实现事务ACID特性吗
Redis 的事务机制可以保证一致性和隔离性,但是无法保证持久性。原创 2023-04-18 15:33:25 · 455 阅读 · 0 评论 -
Redis高可用之3种集群方案对比
其中客户端分片、Redis Cluster属于无中心化的集群方案,Codis属于中心化的集群方案。是否中心化是指客户端访问多个Redis节点时:是直接访问还是通过一个中间层Proxy来进行操作,直接访问的就属于无中心化的方案,通过中间层Proxy访问的就属于中心化的方案,它们有各自的优劣。原创 2023-04-18 10:47:32 · 1434 阅读 · 0 评论 -
mac系统下使用clion调试redis源码
mac系统下使用clion调试redis源码原创 2023-04-17 16:03:10 · 592 阅读 · 1 评论 -
Redis 6.0的多线程是如何工作的
来了解下 6.0 版本中新出的多线程特性。原创 2023-04-16 23:31:44 · 795 阅读 · 1 评论 -
Redis高可用之哨兵挂了,主从库还能切换吗
为了避免单个哨兵故障后无法进行主从切换,以及为了减少误判率,又引入了哨兵集群原创 2023-04-16 23:19:45 · 802 阅读 · 1 评论 -
聊聊Redis sentinel 机制
Redis 的哨兵机制自动完成了以下三大功能,从而实现了主从库的自动切换,可以降低 Redis 集群的运维开销。原创 2023-04-16 23:04:31 · 294 阅读 · 0 评论 -
Redis源码之Hash表实现
对 Redis 来说,首先它是单线程的工作模式,所以不需要考虑并发问题。想实现一个性能优异的 Hash 表,就要重点解决哈希冲突和 rehash 开销这两个问题。原创 2023-04-12 17:02:57 · 573 阅读 · 0 评论 -
聊聊Redis 的过期键删除策略
在 Redis 4.0 版本之后提供了惰性删除的功能,所以 Redis 缓存淘汰数据的时候,就会根据是否启用惰性删除,来决定是执行同步删除还是异步的惰性删除。而你要知道,无论是同步删除还是异步的惰性删除,它们都会先把被淘汰的键值对从哈希表中移除。然后,同步删除就会紧接着调用 dictFreeKey、dictFreeVal 和 zfree 三个函数来分别释放 key、value 和键值对哈希项的内存空间。而异步的惰性删除,则是把空间释放任务交给了后台线程来完成。原创 2023-04-13 17:01:44 · 758 阅读 · 0 评论 -
Redis内存碎片如何清理
明明做了数据删除,数据量已经不大了,为什么使用 top 命令查看时,还会发现 Redis 占用了很多内存呢?实际上,这是因为,当数据删除后,Redis 释放的内存空间会由内存分配器管理,并不会立即返回给操作系统。原创 2023-04-13 11:38:55 · 656 阅读 · 0 评论 -
Redis运维之swap影响及解决方案
redis作为内存数据库,如果redis对应的内存发生了swap,那么redis的性能会受到极大的影响原创 2023-04-13 11:32:13 · 1075 阅读 · 0 评论 -
Redis缓冲区溢出及解决方案
分析了Redis的三个缓冲区,以及可能造成其溢出的原因和解决办法。对于缓冲区溢出其实主要有两种原因,一是缓冲区大小不够,二是消费者处理的速度太慢,而生产者生产的太快,导致大量内容积压在缓冲区,进而导致溢出。原创 2023-04-12 14:47:27 · 2127 阅读 · 1 评论 -
Redis源码之SDS简单动态字符串
Redis 是内存数据库,高效使用内存对 Redis 的实现来说非常重要,看一下,Redis 中针对字符串结构针对内存使用效率做的设计优化。原创 2023-04-11 19:29:58 · 574 阅读 · 0 评论