![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
精通redis
文章平均质量分 94
纵横千里,捭阖四方
弱小,是最大的罪过;没有行动,梦想终究是想一想
展开
-
【征服redis16】收官-redis缓存一致性问题解决方案
只要使用redis做缓存,就必然存在缓存和DB数据一致性问题。若数据不一致,则业务应用从缓存读取的数据就不是最新数据,可能导致严重错误。比如将商品的库存缓存在Redis,若库存数量不对,则下单时就可能出错,这是不能接受的。缓存和DB的数据一致性缓存有数据 缓存的数据值需和DB相同缓存无数据 DB必须是最新值不符合这两种情况的,都属于缓存和DB数据不一致。原创 2024-01-22 20:35:28 · 1222 阅读 · 0 评论 -
【征服redis15】分布式锁的功能与整体设计方案
以上的实现思路仅仅考虑在单机版Redis上,如果是集群版Redis需要考虑的问题还要再多一点。Redis由于他的高性能读写能力,所以在并发高的场景下使用Redis分布式锁会多一点。上面的问题一,二,三其实就是redis分布式锁不断改良发展的过程,第一个问题是设置有效期防止死锁,并且引入守护线程给锁续期,第二个问题是支持可重入锁,第三个问题是加锁失败后阻塞等待,等锁释放后再次尝试加锁。Redisson框架解决这三个问题的思路也非常值得学习。阿里云开发者。原创 2024-01-21 23:55:03 · 961 阅读 · 0 评论 -
【征服redis14】认真理解一致性Hash与Redis的三种集群
前面我们介绍了主从复制的方式和sentinel方式,这里我们看第三种模式-Cluster方式。原创 2024-01-21 19:55:07 · 1353 阅读 · 0 评论 -
【redis13】集群前奏:sentinel模式
Redis的哨兵模式是一种用于实现高可用性的机制。在哨兵模式中,多个Redis实例组成一个哨兵集群,其中一个实例作为主服务器,其他实例作为从服务器。哨兵监控主服务器的状态,并在主服务器宕机时自动将某个从服务器提升为新的主服务器,以保证系统的持续可用性。原创 2024-01-20 23:25:54 · 1147 阅读 · 1 评论 -
【征服Redis12】redis的主从复制问题
从现在开始,我们来讨论redis集群的问题,在前面我们介绍了RDB和AOF两种同步机制,那你是否考虑过这两个机制有什么用呢?其中的一个重要作用就是为了集群同步设计的。Redis是一个高性能的键值存储系统,广泛应用于Web应用、缓存、等领域。在实际应用中,为了保证Redis的高可用性,通常需要使用主从复制来进行数据备份和故障转移。本文将介绍Redis主从复制的概念、原理和实现方式,以及主从复制中的一些问题和解决方案。原创 2024-01-20 22:44:05 · 1098 阅读 · 0 评论 -
【征服redis11】花了一天,我终于懂了redis的底层数据结构
链表是这样一种数据结构,其中的各对象按线性顺序排列。链表与数组的不同点在于,数组的顺序由下标决定,链表的顺序由对象中的指 针决定。List是链型数据存储常用的数据结构,可以是单向链表、双向 链表,可以是排序链表、无序链表,可以是循环链表、非循环链表。链表具有可快速插入、删除的优点。由于List查找复杂度为O(n),n为元素 个数,所以不适用于快速查找的场合。Redis 3.2版本之前使用的双向非循环链表的基本结构如图所示。原创 2024-01-20 21:22:13 · 1219 阅读 · 0 评论 -
【征服Redis10】一文理解redis为什么这么快
Redis之所以一统分布式缓存的江湖,其中一大优势就是快,到底有多快呢?官方测试数据表明每秒可以处理13万次set或者lpush请求,执行lua调用可以达到12万次之多。一般来说,我们的Java服务,单台服务qps到达1000就很难了,可见这个数量确实高,那redis为什么快呢?今天我们就来讨论一下。我们接下来详细解释,后面两个紧密相关,我们放在一起来解释。原创 2024-01-20 11:50:05 · 615 阅读 · 0 评论 -
【征服redis9】快速征服lua脚本
Lua是一种小巧而强大的脚本语言,最初由巴西里约热内卢天主教大学的研究小组于1993年开发而成。Lua的设计目标是为应用程序提供灵活的扩展和定制功能。它由标准C编写而成,可以在几乎所有操作系统和平台上编译和运行。Lua的定位决定了它不提供强大的库,因此不适用于开发独立应用程序。Lua的嵌入性使得它在应用程序中广泛应用,既可以作为扩展脚本,也可以替代XML、ini等文件格式作为配置文件使用。Lua脚本可以轻松地被C/C++代码调用,也可以反过来调用C/C++函数,这增加了它在应用程序中的灵活性和应用范围。原创 2024-01-18 23:40:21 · 1273 阅读 · 0 评论 -
【征服redis8】Redis的AOF持久化
Redis 支持多种持久化方式来保证数据的可靠性和持久性。前面我们介绍了RDB方式。我们我们介绍第二种方式——AOF(Append Only File)机制是一种常用的持久化方式,它记录了所有对 Redis 数据库进行修改的命令,在 Redis 重启时可以使用这些命令来重构数据库状态。原创 2024-01-17 20:45:21 · 1193 阅读 · 0 评论 -
【征服redis7】谈谈Redis的RDB持久化方式
从现在开始,我们来探讨redis的一个非常重要的问题——集群,要讨论集群,我们需要先理解redis持久化数据的方法,因为集群本质上就是将一个集群的数据同步到其他机器上。Redis 6的持久化机制主要有两种:RDB(Redis DataBase)和AOF(Append Only File)。前者效果好,但是代价高,使用频率低,后者则完全相反。本文将详细介绍这两种持久化方式的工作原理和配置要点。原创 2024-01-17 20:30:43 · 1278 阅读 · 0 评论 -
【征服redis5】redis的Redisson客户端
Redisson 最初由 GitHub 用户 “mrniko” 创建,并在 Apache 2.0 许可证下发布。它的目标是提供一组强大的工具和 API,帮助开发人员在分布式环境中处理数据,并解决并发和一致性的问题。Redisson 是一款在 Redis 的基础上实现的 Java 驻内存数据网格(In-Memory Data Grid)。它提供了很多分布式的java对象并直接映射到Redis服务器的数据结构。原创 2024-01-16 21:23:44 · 2180 阅读 · 0 评论 -
【征服redis4】一文征服redis的Lettuce客户端
Lettuce是一个高级Redis客户端,用于线程安全的同步、异步和反应式访问。它支持高级的Redis特性,如Sentinel、集群、流水线、自动重新连接和redis数据模型等。Lettuce是完全非阻塞的,基于Netty事件驱动的通信层,其方法将返回具有可观察的类型,可在流或异步编程环境中使用。Lettuce与其他Redis客户端的比较与Jedis这种阻塞的Java Redis客户端相比,Lettuce的主要优势在于其完全非阻塞的IO和线程安全。原创 2024-01-16 20:57:39 · 1320 阅读 · 0 评论 -
【征服redis3】一文征服redis的jedis客户端
Jedis 是一个流行的 Java 编写的 Redis 客户端库,它提供了连接和操作 Redis 服务器的功能。简单易用:Jedis 提供了简洁的 API,方便开发人员使用,减少了连接和操作 Redis 的复杂性。高性能:Jedis 是通过直接与 Redis 服务器进行通信来实现操作的,因此具有较高的性能。支持多种数据类型:Jedis 支持操作 Redis 的各种数据类型,包括字符串、哈希、列表、集合、有序集合等。原创 2024-01-15 23:58:55 · 880 阅读 · 0 评论 -
【征服redis2】redis的事务介绍
在前面我们介绍了redis的几种典型数据结构和应用,本文我们来看一下redis的事务问题。事务也是数据库的重要主题,熟悉关系型数据库的读者应该对事务比较了解,简单地说,事务表示一组动作,要么全部执行,要么全部不执行。例如在社交网站上用户 A关注了用户B,那么需要在用户A的关注表中加入用户B,并且在用户B的粉丝表中添加用户A,这两个行为要么全部执行,要么全部不执行,否则会出现数据不一致的情况。Redis提供了简单的事务功能,将一组需要一起执行的命令放到 multi和exec两个命令之间。原创 2024-01-15 22:44:15 · 1018 阅读 · 0 评论 -
【征服redis1】基础数据类型详解和应用案例
以mysql为代表的数据库,相信很多人都非常熟悉,这是数据持久化存储的最佳方式。但是在更新频繁或者访问强度高的场景下,数据库的性能捉襟见肘,这时候我们使用Redis作为缓存更加合适。缓存是redis最主要的功能,此外,redis还在分布式锁、异步消息队列等方面有重要应用。Redis 是一个开源的在内存中存储数据的结构化键值数据库,它支持多种类型的数据结构,如字符串、列表、集合、哈希、有序集合等。此外,Redis还支持事务、持久化、LUA脚本、LRU清除、自动故障转移等功能。Redis特点。原创 2024-01-14 22:49:35 · 1134 阅读 · 0 评论