您现在的位置是:首页» windows系统» redis五种数据结构,redis集群和哨兵的区别

redis五种数据结构,redis集群和哨兵的区别

2024-07-13 14:15:51
本内容由系统网小编为大家分享,Windows系统安装教程、办公系统、软件怎么使用、软件使用教程、办公软件攻略等信息。我从来没听说过雷迪斯,但我一直想知道它是什么。 从这篇文章中很容易理解,我想澄清以下三个问题:1. redis是什么?2.

本内容由系统网小编为大家分享,Windows系统安装教程、办公系统、软件怎么使用、软件使用教程、办公软件攻略等信息。

我从来没听说过雷迪斯,但我一直想知道它是什么。 从这篇文章中很容易理解,我想澄清以下三个问题:1. redis是什么?2. redis的优点是什么?它们是从哪里来的?一些与红斑有关的问题

雷迪斯是什么

Redis是一个数据库 Redis全称是Remote Dictionary Server,远程数据服务,这是一个存储高速缓存数据库,保持关键值结构,这是一个以C语言编写的开放源代码数据库,目前的版本为7.0。开源代码在: https://github.com/redis/redis redis在数据库分类中属于NoSql数据库,下面简单介绍下NoSqlNoSql(no only SQL)数据库,泛指非关系型数据库。第一个想到的问题应该是既然有了SQL为什么还会有NoSql的存在呢?创建NoSQL数据库是为了解决多类型数据的大型数据集的挑战,特别是大数据应用问题,包括存储大规模数据。与结构化SQL相比,非关联存储数据是半结构的,这意味着计算机在内存中读取的规则较少。读入速度更快。但这并不是说破坏性更好。非结构性数据库和结构性数据库都有优势,数据结构的读写越快,速度就越慢。但是,它们提供的功能越强大。与SQL数据库相比,Redis数据库没有表的概念,它认识到需要通过不同的数据类型存储数据,不同的数据类型可以适应不同的应用程序场景,从而满足开发者的需求。上面说,雷迪斯保持关键值结构,但也有限制,理论上 Redis 的每个 key、value 的大小不超过 512 MBredis的地位可不低,是目前最流行的一种NoSql数据库。既然是数据库其实就是存储数据用的,那为何redis能收到各方面的青睐呢?这就是下面要介绍的内容呀! Redis网站: https://redis.io/

雷迪斯的优点是什么

本节的内容首先描述如何介绍雷迪斯的优点,然后围绕每个优点详细介绍雷迪斯的实现,分析如何提供功能。综述了雷迪斯的优点:1.速度快2.持久性3.redis具有丰富的数据结构和许多应用4.安全性高

1.为什么速度快?

1)基于内存做操作速度是雷迪斯最重要的特征,传统的数据库存储数据在磁盘上,每个操作从磁盘读取和写入数据.众所周知,磁盘IO很慢,雷迪斯被存储在内部作为存储介质,而不是磁盘,读写效率很高。redis将数据直接写入内存中,但是它经常更新到磁盘上。但对于用户来说,这是操作记忆

2)单进程单线程redis的实现使用一个单进程单线程,因此,在处理过程中没有过程/线性转换上下文成本(累积时间相当),因为只有一个线程,更不会发生死锁这种极端耗时好资源的情况。然而,这里单线程是指网络请求的单线程,用线程处理网络连接.在其他方面, 还有线程的操作.

3)非阻塞多路径可重用IO模型Redis本身也是一个CS结构,客户端的网络请求以接口的形式发送,并且可能有多个客户端连接请求。 但是Redis只处理一个网络请求的线程,在这里它被重用以IO多个路径ps:为了简单地介绍IO多路由重用,多连接的正常处理需要多个进程/线进行单独处理,但多个进程/线被上下文关闭。 IO多路径重用是将不同的请求排在队列中,然后通过单一进程处理,从而降低成本。在redis中IO多路复用底层实现基于select,poll这种IO多路复用方法实现的。

4)主从配置主源配置是数据库内容的常规复制到一个节点,这样的话,可以实现读写分离。同时阅读和更新数据,从节点提供只读操作,主节点提供写操作。多读少写,为主节点配置多个节点,从而提高响应效率。只要保持最后节点之间的数据一致性。阅读与写作的分离比同时写作快得多。

2.为什么持久?

从上面学习, redis是基于存储结构的,存储是DRAM,每个关闭是新的内容,所以如何维护持久性?

Redis存储器分为三个部分: 存储器, 磁盘存储器和日志文件.重启后,虽然记忆中没有数据,但是雷迪斯可以将数据从磁盘重载到内存中,这些可以通过配置文件配置,正因为这样,Redis是实现可持续发展的唯一途径。但另一个问题也出现了: 如何将数据写入磁盘?为了防止数据丢失,有一个内部耐久模块,它在指定条件下将内存的状态写入磁盘上的传输文件中,系统启动时载入的传输文件,一旦启动并运行,数据就可用于操作,所以,没有数据丢失。这个持久性模块与雷迪斯的持久性策略有关,有两种方法来处理红外线:

1)RDB策略(默认策略)RDB策略是快照,可以理解成备份。快照会把内存中的数据保存到一个 dump.rdb 的文件中,这个文件在磁盘上。快速的相片存储通常按计划进行,然而,当发生重大变化时,它将很快被储存。工作原理很简单:当雷迪斯需要持续时,雷迪斯将把一个子进程叉,子进程负责将数据写入磁盘上的临时RDB文件。当子进程完成写临时文件时,替换原始RDB,这种优势可以是复制-在-写。2)AOF策略AOF不像RDB那样去直接存储数据,AOF会把所有的对 Redis 的服务器进行修改的命令都存到一个文件里,是命令的集合。在重启的时候进行一次命令回放,然后就可以恢复到之前的状态。两个策略相比而言,当雷迪斯重新启动时,将优先使用AOF文件恢复数据集,因为在AOF文件中存储的数据集通常比在RDB文件中存储的数据集更完整。但是AOF也有缺点,它的文件体积很大,释放时间长,初始化时间可能长。然而,两种方法都确保数据是正确的和持久的存储。

3.具有多种场景的广泛数据结构

Redis支持五个数据类型:String、Hash、List、Set和ZSet。 基于五个数据类型的多个数据结构,因为它支持多种数据结构,应用程序场景丰富,也被称为数据结构数据库。虽然只有5种数据类型,但是有两大好处:一方面五种类型已经可以满足存储各种数据结构体的需要;另外一方面数据类型少,使得规则就少,需要的判断和逻辑就少,这样读/写的速度就更快。这也是快的一个原因。下面是关于五种数据类型的简要介绍(把所有数据视为字符串是一种数据库设计思想):(1)String :key是字符串,value是数字、字符串,或者jpg 图片或者序列化的对象。String 类型的值最大能存储 512M。(2)Hash是一个键值的集合。Redis 的 Hash 是一个 String 的 Key 和 Value 的映射表,Hash 特别适合存储对象。(3)List 列表是简单的字符串列表,按照插入顺序排序。支持左右添加元素。还提供了操作某一段的 API,可以直接查询或者删除某一段的元素。底层双向链表实现。(4)集合是一个无序的 String 类型集合。这个集合通过 Hashtable 实现.集合中的元素没有顺序,而且是没有重复的。作用:自动去重,判断是否在列表中。从关键值的角度来看,所有值都是零。(5)Zset是 String 类型的元素集合,就像 Set 一样。不允许重复元素。和 Set 相比,Zset提供序列函数,实现的原理是将双重类型加权参数 Score 关联起来,这样,集合中的元素可以按分数排列,Redis被用来通过评分值将集合中的成员从小到大分类。适用于订购时,并且可以不重复使用。底层实现上Redis Sorted Set 的内部使用 HashMap 和跳跃表(skipList)来保证数据的存储和有序,HashMap是 members to Score的映射。所有成员都存储在跳板上,序列基于在HashMap中存储的分数,跳板的结构可以提高搜索效率.而且更简单地实施。

当然,有很多应用,但我并没有真正使用它,而且我没有真正理解它,所以我只是记录了以下:1.缓存,临时存储2.消息队列3.计数 参考: Redis 16 个常见使用场景_Young丶的博客-CSDN博客_redis使用场景

4.安全性高:

安全是数据库应该得到保障的首要因素,毕竟,你想要阅读的是正确的数据,否则再快也没用,所有的雷迪斯操作都是原子操作,不正常执行的结果不会发生变化,这样才能保证安全。这对于高对比的场景也具有自然优势。还有一点就是主从配置,通过配置从节点备份。保证当主节点即使损坏时数据安全性也有保障(单点故障问题)。主从配置一般需要结合哨兵模式。那为什么需要哨兵呢?主从配置情况下,将主节点挂起来后,从该节点中选择一个,成为新的主节点。外面有许多事情必须改变。通知每个节点系统的新主节点信息。这个过程需要人工参与,为了避免人工,引入哨兵。巡逻队监测主要节点的状况,在主节点挂掉时,从一个节点自动选择到一个新的主节点,然后在系统中广播信息,代替人工操作过程.哨兵有一个具体的执行原则(简言之):有许多哨兵,哨兵们将定期地拨打每个节点,每个节点在收到信息后返回。如果 sentinel没有得到主节点的返回值(主观下线),我会告诉其他哨兵去接它,如果你达到一定数量的无响应(客观的下线),就选取新主节点它基本上是下面的原理图: 图源: Redis是什么-电子发烧友网 (elecfans.com) 当然,Redis支持主源模式,允许您配置集群,这对于支持大型项目更好,这是Redis的一个突出之处

那redis这么好,是不是就没有什么问题呢?当然也不是,下面介绍下redis常见的几个问题:

常见问题

雷迪斯常见问题1:降雪

概念:在高收敛情况下,缓存层无法处理请求,所有请求将流入存储层,并且在短时间内高收敛请求可能导致存储层悬挂,被称为“雷迪斯雪崩”。原因1:缓存中的大量数据同时过期原因2:缓存层已死解决方法:随机设置故障时间以避免大规模故障/使用集群,此缓冲器可以被坏缓冲器取代

Redis常见问题2:缓存吞吐量

概念:多次访问那些redis里没有,数据库也没有的数据。导致数据库搜索压力过大,因为redis没有,所以无法拦截,直接穿透到数据库而得名解决办法:查明情况,然后拦截

Redis常见问题3:缓存中断

概念:热点数据一直在被高并发访问,突然失效了,大量请求直接给到数据库,数据库崩了解决方案:永久修复热点数据

参考: Redis的雪崩,击穿,穿透详解_童先森的blog的博客-CSDN博客_redis击穿

另一个问题是,磁盘是基于内存的,而内存的空间比磁盘更小,所以,如果磁盘满了,你需要一个消时策略怎么办?

雷迪斯有六种消除策略:1) noeviction:返回错误直接写入不再提供服务的请求(除 DEL 和某些特殊请求外)

2)allkeys-lru:使用LRU算法消除所有键(LRU算法:最近最不使用的算法)

3)volatile-lru:从设置过渡时间的关键中删除LRU算法

4)allkeys-random:从所有key中随机淘汰数据

5)volatile-random:从设置了过期时间的key中随机淘汰

6)volatile-ttl:最短的剩余过期时间被排除在过期时间的键集中

不过redis也不是万能的,具体情况还是要具体分析,redis毕竟是缓存机制,如果项目对于缓存要求是强一致性,就不要使用redis。选择一个合适的数据库,灵活多变才是真理。

理论学习是易于学习的,但必须用它来深入理解原则。

参考资料: Redis是什么-电子发烧友网 (elecfans.com)

由于作者的水平有限,如果有任何错误,请纠正下面的评论,谢谢!

XTw.com.Cn系统网专业应用软件下载教程,免费windows10系统,win11,办公软件,OA办公系统,OA软件,办公自动化软件,开源系统,移动办公软件等信息,解决一体化的办公方案。

免责声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。内容仅供参考使用,不准确地方联系删除处理!

联系邮箱:773537036@qq.com

标签: redis