Redis
文章平均质量分 89
沸羊羊_
如果不想成为一个碌碌无为的人,除了对浩渺星空的无穷向往,还必须具备对平庸生活的憎恶。.....
展开
-
面试官:说说Redis中Hash数据类型的底层结构
前言本文将介绍Redis中Hash数据结构的底层结构,字典。概述字典,又称为符号表、关联数组或映射,是一种用于保存键值对的抽象数据结构。在字典中,一个键(key )可以和一个值(value)进行关联(或者说将键映射为值),这些关联的键和值就称为键值对。字典经常作为一种数据结构内置在很多高级编程语言里面,但Redis所使用的C语言并没有内置这种数据结构,因此 Redis构建了自己的字典实现。字典在Redis中的应用相当广泛,比如 Redis的数据库就是使用字典来作为底层实现的,对数据库的增、删、查、原创 2021-08-25 21:24:38 · 922 阅读 · 1 评论 -
面试官:说说Redis的List类型的底层结构
前言Redis的 List 数据类型,作为一种数据类型,它的底层实现是链表,由于 Redis 使用的C语言没有内置这种数据结构,所以 Redis构建了自己的链表实现。List类型的结构就是链表,链表中的每个节点都保存了一个值。除了链表键之外,发布与订阅、慢查询、监视器等功能也用到了链表,Redis服务器本身还使用链表来保存多个客户端的状态信息,以及使用链表来构建客户端输出缓冲区( output buffer ),本文将对Redis的链表进行介绍。链表每个链表使用一个 listNode 结构来表示:原创 2021-08-25 21:22:34 · 819 阅读 · 0 评论 -
面试官:说说Redis存储字符串的底层结构
前言本文将介绍 Redis 字符串类型底层数据结构。C语言传统的字符串表示,被称为C串,而 Redis没有使用这种结构作为默认字符串的存储结构,而是自己构建了一种简单动态字符串(simple dynamic string,SDS)的抽象类型,并将SDS用作Redis的默认字符串表示。在 Redis 中,C字符串只会作为字符串字面量用在一些无需对字符串值进行修改的地方,比如打印日志。SDS当 Redis 需要的不仅仅是一个字符串字面量,而是一个可以被修改的字符串值时,Redis就会使用 SDS 来标原创 2021-08-25 21:21:19 · 361 阅读 · 0 评论 -
Redis高可用——集群
前言Redis集群是Redis提供的分布式数据方案,集群通过分片(sharding)来进行数据共享,并提供复制和故障转移功能。本文将对节点、槽指派、命令执行、重新分片、转向、故障转移、消息等各个方面进行介绍。概念节点一个Redis集群通常由多个节点(node)组成,在刚开始的时候,每个节点都是相互独立的,它们都处于一个只包含自己的集群当中,要组建一个真正可工作的集群,我们必须将各个独立的节点连接起来,构成一个包含多个节点的集群。连接各个节点的工作可以使用CLUSTER MEET命令来完成,该命令原创 2021-08-24 20:28:32 · 1621 阅读 · 1 评论 -
Redis高可用——哨兵Sentinel
前言本文将对Redis的高可用方案———哨兵模式进行介绍,讲解其内部实现原理。概述Sentinel是 Redis的高可用性解决方案:由一个或多个 Sentinel 实例组成的 Sentinel 系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器,然后由新的主服务器代替已下线的主服务器继续处理命令请求。如上图为一个 Sentinel系统实例:server1 为当前的主服务器server2、原创 2021-08-24 20:26:12 · 1759 阅读 · 0 评论 -
Redis高可用——主从复制原理
前言Redis 的高可用方案包括:持久化、主从复制、哨兵和集群。其中持久化侧重解决的是 Redis 数据的单机备份问题;而主从复制则侧重解决数据的多机热备,此外,主从复制还可以实现负载均衡和故障恢复。本文主要介绍 Redis主从复制,包括如何使用主从复制、主从复制相关的配置、主从复制的原理等。主从复制主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave);数据的复制是单向的,只能由主节点到从节点。默认情况下,每台Red原创 2021-08-21 16:32:20 · 1235 阅读 · 0 评论 -
Redis Client 之 Jedis与Lettuce
前言JedisJedis 是 Redis 官方推荐的 Java 连接开发工具,要在Java开发中使用好 Redis中间件,必须对Jedis十分了解才行。基本使用Jedis 的使用非常简单,只需要创建 Jedis 对象的时候指定 host,port,password 即可。Jedis jedis = new Jedis("ip",post);......jedis.close();创建完 Jedis 对象,Jedis底层会打开一条 Socket 通道和 Redis 进行连接,所以在使用完 J原创 2021-08-21 16:31:14 · 3409 阅读 · 2 评论 -
一文搞懂Redis持久化方式RDB&AOF
前言Redis的性能好的特性很大程度上是由于将所有数据都存储在了内存中,然而当 Redis 重启后,所有存储在内存中的数据就会丢失,在一些情况下,我们希望 Redis 在重启后能保证数据不丢失。我们可以让数据从内存中以某种形式同步到磁盘中,使得重启后可以根据硬盘中的记录恢复数据。这一过程就是持久化。Redis支持两种方式的持久化,一种是 RDB ,一种是 AOF,前者会根据指定的规则“定时”将内存中的数据存储在磁盘上,而后者在每次执行命令后将命令本身记录下来,两种持久化方式可以单独使用其中一种,但更多情原创 2021-08-21 16:27:34 · 2853 阅读 · 2 评论 -
Redis使用Lua脚本详解
前言本文将讲解 RedisLua脚本的基本操作以及与 Java项目的集成使用。Lua脚本Lua是一个高效的轻量级脚本语言,在葡萄牙语中是“月亮”的意思,用标准C语言编写并以源代码形式开放,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。为什么要在程序中嵌入 Lua脚本?它解决了什么问题?假设要开发一个 iPhone 的电子宠物游戏,设定玩家每次给宠物喂食,宠物饥饿值就会减 N 点,这个 N 如果设置为一个定值,以后需要更改的话,玩家就需要到 App Store 中升级游戏原创 2021-08-15 13:54:36 · 6020 阅读 · 37 评论