RSS

Posts in 2022

  • Redis 特性

    2022-05-21 in NoSQL

    发布订阅 事件推送 https://redis.io/docs/manual/keyspace-notifications/ 事件类型 __keyspace@db:key_pattern 键空间通知(key-space notification) __keyevent@db:ops_type 键事件通知(key-event notification) 执行del mykey之后,相当于发送以下事件 publish __keyspace@0__:mykey del publish …

    更多

  • Redis 缓存

    2022-05-10 in NoSQL

    缓存问题 Redis 高可用,主从+哨兵,Redis cluster,避免全盘崩溃 本地 ehcache 缓存 + hystrix 限流&降级,避免 MySQL 被打死 缓存穿透 缓存穿透是指用户请求的数据在缓存中不存在即没有命中,同时在数据库中也不存在,导致用户每次请求该数据都要去数据库中查询一遍,然后返回空 布隆过滤器 布隆过滤器(Bloom Filter,简称BF),是一种空间效率高的概率型数据结构,用来检测集合中是否存在特定的元素 布隆过滤器由一个长度为m比特的位数组(bit …

    更多

  • Redis 简介

    2022-05-10 in NoSQL

    概述 Remote Dictionary Server Redis是一种支持key-value等多种数据结构的存储系统。可用于缓存,事件发布或订阅,高速队列等场景。支持网络,提供字符串,哈希,列表,队列,集合结构直接存取,基于内存,可持久化 数据类型 https://redis.io/docs/manual/data-types/ 限制:值的长度限制为512MB,元素大小限制为2^32-1 string https://redis.io/commands/?group=string incr, …

    更多

  • Lucene IndexWriter

    2022-04-29 in NoSQL

    IndexWriterConfig IndexDeletionPolicy:Lucene开放对commit point的管理,通过对commit point的管理可以实现例如snapshot等功能。Lucene默认配置的DeletionPolicy,只会保留最新的一个commit point Similarity:搜索的核心是相关性,Similarity是相关性算法的抽象接口,Lucene默认实现了TF-IDF和BM25算法。相关性计算在数据写入和搜索时都会发生,数据写入时的相关性计算称 …

    更多

  • Lucene 简介

    2022-04-29 in NoSQL

    简介 Apache Lucene是一个开源的高性能、可扩展的信息检索引擎,提供了强大的数据检索能力 Scalable, High-Performance Indexing Powerful, Accurate and Efficient Search Algorithms 概念 Index(索引) 类似数据库的表的概念,但是没有Scheme,相当于Document的集合 Document(文档) 类似数据库内的行或者文档数据库内的文档的概念,写入Index的Document会被分配一个唯一 …

    更多

  • ES 分布式原理Data篇

    2022-04-28 in NoSQL

    Replication写入流程 ES中每个Index会划分为多个Shard,Shard分布在不同的Node上,以此来实现分布式的存储和查询,支撑大规模的数据集。对于每个Shard,又会有多个Shard的副本,其中一个为Primary,其余的一个或多个为Replica。数据在写入时,会先写入Primary,由Primary将数据再同步给Replica。在读取时,为了提高读取能力,Primary和Replica都会接受读请求 1. 检查Active的Shard …

    更多

  • ES 分布式原理Meta篇

    2022-04-28 in NoSQL

    Meta数据 Master节点管理Meta数据并通知其他节点,来驱动各个模块工作,比如创建Shard等 Meta是用来描述数据的数据。在ES中,Index的mapping结构、配置、持久化状态等就属于meta数据,集群的一些配置信息也属于meta。这类meta数据非常重要,假如记录某个index的meta数据丢失了,那么集群就认为这个index不再存在了。ES中的meta数据只能由master进行更新 Meta数据结构 集群中的每个节点都会在内存中维护一个当前的ClusterState,表示当前 …

    更多

  • ES 分布式原理Node篇

    2022-04-27 in NoSQL

    ES集群构成 配置文件 conf/elasticsearch.yml node.master: true node.data: false 当node.master为true时,其表示这个node是一个master的候选节点,可以参与选举,在ES的文档中常被称作 master-eligible node,类似于Leader和Candidate的关系。当node.data为true时,这个节点作为一个数据节点,会存储分配在该node上的shard的数据并负责这些shard的写入、查询等。此外,任何 …

    更多

  • ES 查询性能

    2022-04-27 in NoSQL

    Lucene查询原理 Lucene的数据结构 FST 保存term字典,可以在FST上实现单Term、Term范围、Term前缀和通配符查询等 对字符串范围/前缀/通配符查询,Lucene会从FST中获取到符合条件的所有Term,然后就可以根据这些Term再查找倒排链,找到符合条件的doc。FST相关的字符串查询要比倒排链查询慢很多(以上10倍) 倒排链 保存了每个term对应的docId的列表,采用skipList的结构保存,用于快速跳跃 对单个词条进行查询,Lucene会读取该词条的倒排链, …

    更多

  • ES 写入

    2022-02-17 in NoSQL

    写入流程 写操作在搜索系统和NoSQL数据库中的对比 实时性: 搜索系统的Index一般都是NRT(Near Real Time),近实时的,比如Elasticsearch中,Index的实时性是由refresh控制的,默认是1s,最快可到100ms,那么也就意味着Index doc成功后,需要等待一秒钟后才可以被搜索到。 NoSQL数据库的Write基本都是RT(Real Time),实时的,写入成功后,立即是可见的。Elasticsearch中的Index请求也能保证是实时的,因为Get请求 …

    更多