
缓存域
文章平均质量分 91
Redis 是一个高性能的开源内存数据库,广泛应用于缓存、会话管理和实时数据处理。本文专栏推荐将深入解析 Redis 的核心原理、数据结构(如字符串、哈希、列表、集合和有序集合),以及高可用性方案(如主从复制、哨兵模式和集群架构)。此外,还将分享 Redis 在实际项目中的优化技巧和常见问题解决方案
庄小焱
我是庄小焱,某大厂Java高级工程师、PMP项目管理专家、系统架构设计师(高级)、CSDN博文专家。博主在支付交易领域,信贷金融领域、机器学习模型算法领域深耕,我在博客中分享业务、技术、产品相关知识,欢迎大家和我交流学习。
展开
-
Redis——Redis面试问题
本博文主要是分享有关于Redis的面试问题与解答。帮助大家更快的学习和了解Redis的相关知识点,同时更好的帮助大家应对面试中有关于Redis的问题。原创 2020-05-08 17:46:57 · 994 阅读 · 1 评论 -
Redis——Redis知识脑图
摘要Redis的相关的资源和知识脑图。一、gitee的相关资源:https://gitee.com/xjl2462612540/RedisPrinciple二、Redis的知识脑图三、Redis基础原理文章博文参考原创 2021-04-16 15:32:28 · 691 阅读 · 0 评论 -
Redis——Redis常用命令集合
摘要主要是分享一下redis的常见的命令和相关的描述Redis 键(key) 命令命令 描述 Redis Type 命令 返回 key 所储存的值的类型。 Redis PEXPIREAT 命令 设置 key 的过期时间亿以毫秒计。 Redis PEXPIREAT 命令 设置 key 过期时间的时间戳(unix timestamp) 以毫秒计 Redis Rename 命令 修改 key 的名称 Redis PERSIST 命令 移除 key原创 2021-04-01 08:57:40 · 668 阅读 · 0 评论 -
Redis——Redis命令执行原理
当问到一些面试者:Redis 是如何执行的?收到的答案往往是:客户端发命令给服务器端,服务端收到执行之后再返回给客户端。然而对于执行细节却避而不谈,当继续追问服务器端是如何执行的?能回答上来的人更是寥寥无几。原创 2022-03-29 20:56:01 · 1691 阅读 · 0 评论 -
Redis——Redis数据结构底层原理
本博文主要介绍Redis数据结构底层原理。帮助大家更好的学习和理解Redis数据结构。Redis发展到现在已经有 9 种数据类型了,其中最基础、最常用的数据类型有 5 种,它们分别是:字符串类型、列表类型、哈希表类型、集合类型、有序集合类型,而在这 5 种数据类型中最常用的是字符串类型。这五种数据结构的底层实现丰富。原创 2022-03-31 13:25:24 · 4257 阅读 · 0 评论 -
Redis——Redis内存模型原理
摘要Redis是目前最火爆的内存数据库之一,通过在内存中读写数据,大大提高了读写速度,可以说Redis是实现网站高并发不可或缺的一部分。我们使用Redis时,会接触Redis的5种对象类型(字符串、哈希、列表、集合、有序集合),丰富的类型是Redis相对于Memcached等的一大优势。在了解Redis的5种对象类型的用法和特点的基础上,进一步了解Redis的内存模型,对Redis的使用有很大帮助,例如:1、估算Redis内存使用量。目前为止,内存的使用成本仍然相对较高,使用内存不能无所顾忌;根原创 2022-04-01 19:55:43 · 1407 阅读 · 2 评论 -
Redis——Redis线程模型原理
Redis 作为缓存系统的事实标准,它的底层原理值得开发者去深入学习,Redis 自 2009 年发布第一版之后,其单线程网络模型的选择在社区中从未停止过讨论。如今到网络上搜索redis线程模型原理文章。都存在很多的误导大家的学习,同时没有深入对redis的线程模型的原理和redis到底使用的是单线程还是使用的多线的原因解释不清楚,今天博文博文将详细的介绍redis3.5的单线模型和redis6.0的多线程模型的原理。原创 2020-12-30 14:34:08 · 1458 阅读 · 0 评论 -
Redis——Redis I/O多路复用原理
Redis的相关网络模型的原理。在Redis中涉及到网络数据的传输。接下来将详细的介绍redis中的多路复用IO网络模型原理。原创 2019-08-08 18:48:50 · 4746 阅读 · 1 评论 -
Redis——Redis持久化原理
Redis 的读写都是在内存中,所以它的性能较高,但在内存中的数据会随着服务器的重启而丢失,为了保证数据不丢失,我们需要将内存中的数据存储到磁盘,以便 Redis 重启时能够从磁盘中恢复原有的数据,而整个过程就叫做 Redis 持久化。Redis 持久化也是 Redis 和 Memcached 的主要区别之一,因为 Memcached 不具备持久化功能。原创 2022-03-29 21:50:52 · 1907 阅读 · 0 评论 -
Redis——Redis键值过期策略
摘要RedisCluster 是 Redis 的亲儿子,它是 Redis 作者自己提供的 Redis 集群化方案。相对于 Codis 的不同,它是去中心化的,如图所示,该集群有三个 Redis 节点组成,每个节点负责整个集群的一部分数据,每个节点负责的数据多少可能不一样。这三个节点相互连接组成一个对等的集群,它们之间通过一种特殊的二进制协议相互交互集群信息。Redis Cluster 将所有数据划分为 16384 的 slots,它比 Codis 的 1024 个槽划分的更为精细,每个节点负责其原创 2021-03-15 20:20:35 · 1207 阅读 · 0 评论 -
Redis——Redis事务性原理
Redis的资源:Redis 基础数据结构Redis 有 5 种基础数据结构,分别为: string (字符串)、 list (列表)、 set (集合)、 hash (哈希) 和 zset (有序集合)。string (字符串):字符串 string 是 Redis 最简单的数据结构。 Redis 所有的数据结构都是以唯一的 key字符串作为名称,然后通过这个唯一 key 值来获取相应的 value 数据。不同类型的数据结构的差异就在于 value 的结构不一样。字符串结构使用非常广泛,一原创 2020-07-25 19:30:31 · 1405 阅读 · 1 评论 -
Redis——Redis数据迁移原理
摘要为了确保连续多个操作的原子性,一个成熟的数据库通常都会有事务支持, Redis 也不例外。 Redis 的事务使用非常简单,不同于关系数据库,我们无须理解那么多复杂的事务模型,就可以直接使用。不过也正是因为这种简单性,它的事务模型很不严格,这要求我们不能像使用关系数据库的事务一样来使用 Redis。Redis 事务的基本使用每个事务的操作都有 begin、 commit 和 rollback, begin 指示事务的开始, commit 指示事务的提交, rollback 指示事务的回滚。它原创 2021-03-15 16:13:40 · 366 阅读 · 0 评论 -
Redis——Redis缓存失效问题
本博文介绍Redis作为缓存使用可能存在缓存雪崩、缓存穿透、缓存击穿、缓存预热、缓存更新、缓存降级等问题。同时提供一些常见解决方案,供大家参考和学习。原创 2021-03-16 10:56:46 · 3480 阅读 · 1 评论 -
Redis——Redis主从架构原理
摘要本文中将就Redis的相关的的问题和与源码的分析Redis的基础的数据的结构原理原创 2021-03-04 15:35:16 · 1874 阅读 · 1 评论 -
Redis——Redis哨兵机制原理
摘要Redis 的数据全部在内存里,如果突然宕机,数据就会全部丢失,因此必须有一种机制来保证 Redis 的数据不会因为故障而丢失,这种机制就是 Redis 的持久化机制。Redis 的持久化机制有两种,第一种是快照,第二种是 AOF 日志。快照是一次全量备份, AOF 日志是连续的增量备份。快照是内存数据的二进制序列化形式,在存储上非常紧凑,而 AOF 日志记录的是内存数据修改的指令记录文本。 AOF 日志在长期的运行过程中会变的无比庞大,数据库重启时需要加载 AOF 日志进行指令重放,这个时间就会无原创 2021-03-15 15:39:03 · 4231 阅读 · 1 评论 -
Redis——Redis Cluster集群原理
摘要我们平时习惯于使用 Rabbitmq 和 Kafka 作为消息队列中间件,来给应用程序之间增加异步消息传递功能。这两个中间件都是专业的消息队列中间件,特性之多超出了大多数人的理解能力。使用过 Rabbitmq 的同学知道它使用起来有多复杂,发消息之前要创建 Exchange,再创建 Queue,还要将 Queue 和 Exchange 通过某种规则绑定起来,发消息的时候要指定 routingkey,还要控制头部信息。消费者在消费消息之前也要进行上面一系列的繁琐过程。但是绝大多数情况下,虽然我们的消息原创 2021-03-14 14:51:15 · 5001 阅读 · 0 评论 -
Redis——Redis分布式锁原理与实战
分布式应用进行逻辑处理时经常会遇到并发问题。比如一个操作要修改用户的状态,修改状态需要先读出用户的状态,在内存里进行修改,改完了再存回去。如果这样的操作同时进行了,就会出现并发问题,因为读取和保存状态这两个操作不是原子的。( Wiki 解释:所谓原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何 context switch 线程切换。)这个时候就要使用到分布式锁来限制程序并发的执行。原创 2021-03-13 17:42:02 · 810 阅读 · 1 评论 -
Redis——Redis缓存与数据库数据一致性问题
摘要主要介绍redis的高并发的架构的原理和使用的场景实现。解决的分布式数据不一致问题的最基本的原理是采用的是原子性操作问题。在redis中主要是依赖于的是Lua来实现的。1、高并发场景秒杀下单超卖,使用的Redis的来实现的分布式锁的原理1使用的JVM的锁的结构(但是在目前线上都是的集群模型的内容,所以会导致的这样的数据不一致问题。)synchronized锁问题 或者是使用的的是主线程来实现这样的一个结构。通过控制时间,但是还是存在的问题。如果存在一个线程出现的bug的时候:设置一个原创 2021-03-15 10:37:02 · 1723 阅读 · 2 评论 -
Redis——Redis性能优化与技术选型原理
redis的拥有众多优点,但是的技术有利有弊,所以只有在redis最擅长的场景中才能让redis的作用发挥到最大的作用。同样的redis一样存在很多优化和改进的点。原创 2021-03-15 13:22:22 · 911 阅读 · 0 评论 -
Redis——HyperLog原理与应用
摘要但是,如果你的页面访问量非常大,比如一个爆款页面几千万的 UV,你需要一个很大的 set 集合来统计,这就非常浪费空间。如果这样的页面很多,那所需要的存储空间是惊人的。为这样一个去重功能就耗费这样多的存储空间,值得么?其实老板需要的数据又不需要太精确, 105w 和 106w 这两个数字对于老板们来说并没有多大区别,有没有更好的解决方案呢?这就是本节要引入的一个解决方案, Redis 提供了 HyperLogLog 数据结构就是用来解决这种统计问题的。 HyperLogLog 提供不精确的去重计数方原创 2021-03-15 12:12:29 · 1788 阅读 · 0 评论 -
Redis——GeoHash原理与应用
摘要Redis 在 3.2 版本以后增加了地理位置 GEO 模块,意味着我们可以使用 Redis 来实现摩拜单车「附近的 Mobike」、美团和饿了么「附近的餐馆」这样的功能了。用数据库来算附近的人地图元素的位置数据使用二维的经纬度表示,经度范围 (-180, 180],纬度范围 (-90,90],纬度正负以赤道为界,北正南负,经度正负以本初子午线 (英国格林尼治天文台) 为界,东正西负。比如掘金办公室在望京 SOHO,它的经纬度坐标是 (116.48105,39.996794),都是正数,因为原创 2021-03-15 13:58:26 · 955 阅读 · 2 评论 -
Redis——Scan原理与应用
摘要Redis是目前广为人知的一个内存数据库,在各个场景中都有着非常丰富的应用,前段时间Redis推出了6.0的版本,在新版本中采用了多线程模型。Redis 6.0 只有在网络请求的接收和解析,以及请求后的数据通过网络返回给时,使用了多线程。而数据读写操作还是由单线程来完成的(所以不存在数据安全问题)Redis为什么最开始被设计成单线程的?Redis作为一个成熟的分布式缓存框架,它由很多个模块组成,如网络请求模块、索引模块、存储模块、高可用集群支撑模块、数据操作模块等。很多人说Redis是单线程原创 2021-03-31 16:24:52 · 4876 阅读 · 0 评论 -
Redis——Bloom Filter原理与应用
摘要在我们平时开发过程中,会有一些 bool 型数据需要存取,比如用户一年的签到记录,签了是 1,没签是 0,要记录 365 天。如果使用普通的 key/value,每个用户要记录 365个,当用户上亿的时候,需要的存储空间是惊人的。为了解决这个问题, Redis 提供了位图数据结构,这样每天的签到记录只占据一个位,365 天就是 365 个位, 46 个字节 (一个稍长一点的字符串) 就可以完全容纳下,这就大大节约了存储空间。位图不是特殊的数据结构,它的内容其实就是普通的字符串,也就是 byte原创 2021-03-15 09:36:50 · 500 阅读 · 0 评论 -
Redis——Current-limiting的原理与应用
摘要限流算法在分布式领域是一个经常被提起的话题,当系统的处理能力有限时,如何阻止计划外的请求继续对系统施压,这是一个需要重视的问题。在这里用 “断尾求生” 形容限流背后的思想,当然还有很多成语也表达了类似的意思,如弃卒保车、壮士断腕等等。除了控制流量,限流还有一个应用目的是用于控制用户行为,避免垃圾请求。如在UGC 社区,用户的发帖、回复、点赞等行为都要严格受控,一般要严格限定某行为在规定时间内允许的次数,超过次数那就是非法行为。对非法行为,业务必须规定适当的惩处策略。如何使用 Redis 来实现简原创 2021-03-15 13:38:05 · 906 阅读 · 0 评论 -
Redis——DelayedQueue原理与应用
摘要主要介绍的是的线程的IO模型的原理Redis 是个单线程程序! 这点必须铭记。也许你会怀疑高并发的 Redis 中间件怎么可能是单线程。很抱歉,它就是单线程,你的怀疑暴露了你基础知识的不足。莫要瞧不起单线程,除了 Redis 之外, Node.js 也是单线程, Nginx 也是单线程,但是它们都是服务器高性能的典范。Redis 单线程为什么还能这么快?因为它所有的数据都在内存中,所有的运算都是内存级别的运算。正因为 Redis 是单线程,所以要小心使用 Redis 指令,对于那些时原创 2021-03-15 14:25:04 · 2729 阅读 · 1 评论 -
Redis——Redis扩展应用与实战
摘要在redis的架构中主从架构是很重要的一种,涉及到数据的迁移数据的一致性问题。主从复制模式Redis 主从复制的核心原理:当启动一个 slave node 的时候,它会发送一个 PSYNC 命令给 master node。如果这是slave node 初次连接到 master node,那么会触发一次 full resynchronization 全量复制。此时 master 会启动一个后台线程,开始生成一份 RDB 快照文件,同时还会将从客户端 client 新收到的所有写命令缓存在内存中原创 2021-03-16 10:52:10 · 252 阅读 · 1 评论 -
Redis——Redis的扩展与应用
Redis 和 Memcached 的区别?Redis的高级的数据结构String、Hash、List、Set、SortedSet。HyperLogLog、Geo、Pub/Sub。那你说还玩过Redis Module,像BloomFilter,RedisSearch,Redis-ML避免缓存穿透的利器之BloomFilter如果有大量的key需要设置同一时间过期,一般需要注意什么?如果大量的key过期时间设置的过于集中,到过期的那个时间点,Redis可能会出现短暂的卡顿现象。严重的.原创 2021-04-02 14:51:57 · 1658 阅读 · 0 评论 -
Redis——Redis扩展应用与实战
摘要主要是介绍了的redis的哨兵机制以及底层原理。哨兵模式(raft)与Zookeeper模式(zab)选主的总结 Redis中的Sentinel选主相对来说更简单,因为不涉及事务状态的一致性 Sentinel选主是基于raft协议,Zookeeper则基于Zab协议 二者都是收到半数的选票就选举成功,同样的都是分布式部署 Sentinel投票发消息主要内容是Sentinel id和配置纪元,Zookeeper则是 zxid和 sid Sentin...原创 2021-04-20 09:17:30 · 670 阅读 · 1 评论 -
Redis——Redis扩展应用与实战
摘要主要是介绍Redis的数据恢复的原理和实战Redis持久化Redis提供了两种持久化的选项,一种是快照文件(snapshotting,RDB),它会基于某个时间点将数据全部写入硬盘中(默认为dump.rdb)。另一种是只追加文件(append-only,AOF),它会在执行写入命令时将命令写入到硬盘中。Redis持久化数据最主要是为了数据备份,故障恢复,也有一些经过耗时较长的计算结果存在Redis中,如果这些数据存在硬盘中,即使服务器重启了之后,这些数据还是存在的,不用再去耗时计算了。这两种原创 2021-04-02 09:28:29 · 1623 阅读 · 0 评论 -
Redis——Redis的可视化管理工具
摘要Redis的对象的系列化和反序列化问题的解决方案。Redis的key要设置序列化类,但不能直接使用StringRedisSerializer,否则会导致Integer等类型的key序列化失败,可以自定义序列化类,或者使用StringRedisSerializer后key都要.toString();...原创 2021-04-27 20:37:33 · 639 阅读 · 0 评论