
NoSQL
文章平均质量分 90
NoSQL相关
fedorafrog
这个作者很懒,什么都没留下…
展开
-
Elasticsearch核心技术(一):Elasticsearch入门
Elasticsearch是面向文档(Document)的,文档是所有可搜索数据的最小单位;文档会被序列化成Json格式,保存在Elasticsearch中,并且每个文档都有一个唯一ID,可以通过Elasticsearch自动生成,也可以自己进行指定。对比MySQL,每行数据都有一个主键,这个主键可以使用MySQL自增主键,也可以通过雪花算法等方式生成然后进行自己设置。文档的元数据,用于标注文档的相关信息。例如:_index表示文档所属的索引名,_id表示文档唯一ID,_score表示相关性打分,_sour转载 2022-12-15 16:03:31 · 485 阅读 · 0 评论 -
Redis多线程网络模型详解
1. 导言在目前的技术选型中,Redis 俨然已经成为了系统高性能缓存方案的事实标准,因此现在 Redis 也成为了后端开发的基本技能树之一,Redis 的底层原理也顺理成章地成为了必须学习的知识。Redis 从本质上来讲是一个网络服务器,而对于一个网络服务器来说,网络模型是它的精华,搞懂了一个网络服务器的网络模型,你也就搞懂了它的本质。本文通过层层递进的方式,介绍了 Redis 网络模型的版本变更历程,剖析了其从单线程进化到多线程的工作原理,此外,还一并分析并解答了 Redis 的网络模型的很转载 2021-03-10 14:12:29 · 2365 阅读 · 0 评论 -
Redis6.0多线程
1. 背景曾经Redis是单线程模式,这个曾经也算Redis的优势,那么随着6.0版本多线程的发布,这个版本之后彻底的抛弃了单线程模型这一设计。原本使用单线程运行的 Redis 也开始选择性使用多线程模型。看来任何事物都逃不过“真香定律”那么以后关于Redis面试题:Redis是多线程还是单线程这个问题该如何回答呢?仔细想想,这个问题其实可以拆分,拆分为两个主要的问题:为什么 Redis 一开始选择单线程模型(单线程的好处)? 为什么 Redis 在 6.0 之后加入了多线程(在某些情转载 2021-02-04 16:25:52 · 469 阅读 · 0 评论 -
Redis应用详解(四)集群分片模式
如果Redis只用复制功能做主从,那么当数据量巨大的情况下,单机情况下可能已经承受不下一份数据,更不用说是主从都要各自保存一份完整的数据。在这种情况下,数据分片是一个非常好的解决办法。Redis的Cluster正是用于解决该问题。它主要提供两个功能:自动对数据分片,落到各个节点上 即使集群部分节点失效或者连接不上,依然可以继续处理命令对于第二点,它的功能有点类似于Sentienl的故障转移(可以了解下之前Sentinel的文章),在这里不细说。下面详细了解下Redis的槽位分片原理,在此之前,先转载 2021-01-21 20:56:55 · 1908 阅读 · 0 评论 -
Redis应用详解(三)分布式集群3种架构方案
1. 集群方案主从高可用(该方案就是单实例形式,只是为了保证数据的安全,对于用户数据少,业务的前期可以采用,目前我司缓存架构就是采用该方案) 客户端分片(典型代表:Jedis。自主写分片算法,代码掌握在自己手中,可控性强,但是需要专业的开发运维人员维护,技术要求和维护成本高) 代理分片(典型代表:Twemproxy,redis集群没有正式推出之前官网推荐的方案,也是目前使用最多的) Redis cluster(3版本推出的集群方案,历时四年之多的开发) Codis集群(豌豆荚15年开源的解决方案转载 2021-01-21 20:50:24 · 1230 阅读 · 0 评论 -
Redis应用详解(二)基本应用场景
毫无疑问,Redis开创了一种新的数据存储思路,使用Redis,我们不用在面对功能单调的数据库时,把精力放在如何把大象放进冰箱这样的问题上,而是利用Redis灵活多变的数据结构和数据操作,为不同的大象构建不同的冰箱。希望你喜欢这个比喻。1.显示最新的项目列表在Web应用中,“列出最新的回复”之类的查询非常普遍,这通常会带来可扩展性问题。这令人沮丧,因为项目本来就是按这个顺序被创建的,但要输出这个顺序却不得不进行排序操作。类似的问题就可以用Redis来解决。比如说,我们的一个Web应用想要列出用户贴.转载 2021-01-21 20:43:17 · 180 阅读 · 0 评论 -
Redis应用详解(一)分布式锁
1. 前言在某些场景中,多个进程必须以互斥的方式独占共享资源,这时用分布式锁是最直接有效的。随着技术快速发展,数据规模增大,分布式系统越来越普及,一个应用往往会部署在多台机器上(多节点),在有些场景中,为了保证数据不重复,要求在同一时刻,同一任务只在一个节点上运行,即保证某一方法同一时刻只能被一个线程执行。在单机环境中,应用是在同一进程下的,只需要保证单进程多线程环境中的线程安全性,通过 JAVA 提供的 volatile、ReentrantLock、synchronized 以及 concurre转载 2021-01-20 19:34:42 · 4449 阅读 · 3 评论 -
Redis详解(八)bitmap
1.什么是 bitmapbitmap,即位图。bitmap就是通过最小的单位bit来进行0或者1的设置,表示某个元素对应的值或者状态。一个bit的值,或者是0,或者是1;也就是说一个bit能存储的最多信息是2。位(bit):是计算机 内部数据储存的最小单位,11001100是一个八位二进制数。 字节(byte):是计算机中数据处理的基本单位,习惯上用大写 B 来表示,1B(byte,字节)= 8bit2.重要 API命令 含义 getbit key offset 用于..转载 2020-12-03 09:35:34 · 1649 阅读 · 0 评论 -
Redis详解(七)哨兵模式和集群模式
1. 哨兵模式哨兵模式是redis高可用的实现方式之一使用一个或者多个哨兵(Sentinel)实例组成的系统,对redis节点进行监控,在主节点出现故障的情况下,能将从节点中的一个升级为主节点,进行故障转义,保证系统的可用性。1.1哨兵们是怎么感知整个系统中的所有节点(主节点/从节点/哨兵节点)的1. 首先主节点的信息是配置在哨兵(Sentinel)的配置文件中2. 哨兵节...转载 2020-03-03 15:45:21 · 5587 阅读 · 0 评论 -
Redis详解(六)渐进式rehash机制
在Redis中,键值对(Key-Value Pair)存储方式是由字典(Dict)保存的,而字典底层是通过哈希表来实现的。通过哈希表中的节点保存字典中的键值对。我们知道当HashMap中由于Hash冲突(负载因子)超过某个阈值时,出于链表性能的考虑,会进行Resize的操作。Redis也一样。在redis的具体实现中,使用了一种叫做渐进式哈希(rehashing)的机制来提高字典的缩放效率,避...转载 2020-03-03 15:25:14 · 2444 阅读 · 2 评论 -
Redis详解(五)AOF持久化
上一篇文章我们介绍了Redis的RDB持久化,RDB 持久化存在一个缺点是一定时间内做一次备份,如果redis意外down掉的话,就会丢失最后一次快照后的所有修改(数据有丢失)。对于数据完整性要求很严格的需求,怎么解决呢?本篇博客接着来介绍Redis的另一种持久化方式——AOF。1. AOF简介Redis的持久化方式之一RDB是通过保存数据库中的键值对来记录数据库的状态。而另一种持久化...转载 2020-01-08 17:18:11 · 337 阅读 · 0 评论 -
Redis详解(四)RDB持久化
前面我们说过,Redis 相对于Memcache 等其他的缓存产品,有一个比较明显的优势就是 Redis 不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。这几种丰富的数据类型我们花了两篇文章进行了详细的介绍,接下来我们要介绍 Redis 的另外一大优势——持久化。 由于 Redis 是一个内存数据库,所谓内存数据库,就是将数据库...转载 2020-01-08 16:58:39 · 322 阅读 · 0 评论 -
Redis详解(三)五大数据类型底层实现
前面两篇博客,第一篇介绍了五大数据类型的基本用法,第二篇介绍了Redis底层的六种数据结构。在Redis中,并没有直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统,这些对象系统也就是前面说的五大数据类型,每一种数据类型都至少用到了一种数据结构。通过这五种不同类型的对象,Redis可以在执行命令之前,根据对象的类型判断一个对象是否可以执行给定的命令,而且可以针对不同的场...转载 2020-01-08 14:36:39 · 276 阅读 · 0 评论 -
Redis详解(二)底层数据结构
1. 简单动态字符串第一篇文章我们就说过 Redis 是用 C 语言写的,但是对于Redis的字符串,却不是 C 语言中的字符串(即以空字符’\0’结尾的字符数组),它是自己构建了一种名为 简单动态字符串(simple dynamic string,SDS)的抽象类型,并将 SDS 作为 Redis的默认字符串表示。SDS 定义:struct sdshdr{ //记录buf...转载 2020-01-08 11:57:44 · 1101 阅读 · 1 评论 -
Redis详解(一)五大数据类型
我们说 Redis 相对于Memcache 等其他的缓存产品,有一个比较明显的优势就是 Redis 不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。本篇博客我们就将介绍这些数据类型的详细使用以及顺带介绍Redis系统的相关命令用法。注意:Redis的命令不区分大小写,但是key 严格区分大小写!!!1. string数据类型...转载 2020-01-08 11:28:30 · 233 阅读 · 0 评论 -
Redis知识点汇总
缓存雪崩、缓存穿透、缓存预热、缓存降级等问题缓存雪崩我们可以简单的理解为:由于原有缓存失效,新缓存未设置的期间(例如:我们设置缓存时采用了相同的过期时间,在同一时刻出现大面积的缓存过期),所有本应该访问缓存的请求都去查询数据库了,导致数据库的CPU和内存压力陡增,严重的会造成数据库宕机。从而形成一系列连锁反应,造成整个系统崩溃。解决办法:不同种类的缓存数据设置不同长度的过期时间,将...原创 2019-11-20 11:04:49 · 226 阅读 · 0 评论 -
Redis持久化机制
Redis支持把内存中的数据同步到硬盘文件来保证数据持久化。当redis重启后通过把硬盘文件重新加载到内存,就能达到恢复数据的目的。Redis提供两种持久化机制RDB和AOF,具体实现如下:RDB(Redis DataBase)持久化方式是指用数据集快照的方式半持久化模式,记录redis数据库的所有键值对,在某个时间点将数据写入一个临时文件,持久化结束后,用这个临时文件替换上次持久化的文件...原创 2019-11-20 09:30:10 · 157 阅读 · 0 评论