摘要:一、es在数据量很大的情况下(数十亿级别)如何提高查询效率啊? 1、性能优化的杀手锏——filesystem cache os cache,操作系统的缓存。 往es里写的数据,实际上都写到磁盘文件里去了,磁盘文件里的数据操作系统会自动将里面的数据缓存到os cache里面去。 es的搜索引擎严重依赖
阅读全文
随笔分类 - NoSQL
摘要:一、es的分布式架构原理 elasticsearch设计的理念就是分布式搜索引擎,底层其实还是基于lucene的。 核心思想就是在多台机器上启动多个es进程实例,组成了一个es集群。 es中存储数据的基本单位是索引,比如说你现在要在es中存储一些订单数据,你就应该在es中创建一个索引,order_i
阅读全文
摘要:一、LRU算法介绍 LRU是Least Recently Used的缩写,即最近最少使用,常用于页面置换算法,为虚拟页式存储管理服务。 LRU算法的提出,是基于这样一个事实:在前面几条指令中使用频繁的页面很可能在后面的几条指令中频繁使用。反过来说,已经很久没有使用的页面很可能在未来较长的一段时间内不
阅读全文
摘要:一、Redis命令 1、setnx()命令: setnx的含义就是SET if Not Exists,其主要有两个参数 setnx(key, value)。 该方法是原子的,如果key不存在,则设置当前key成功,返回1;如果当前key已经存在,则设置当前key失败,返回0。 2、get()命令:
阅读全文
摘要:一.Solr概述 1.什么是Solr Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。 Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。 Solr可以独立运行,运行在Jetty、Tomcat
阅读全文
摘要:一.Redis介绍 1.什么是redis Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求, 目前为止Redis支持的键值数据类型如下: 字符串类型 散列类型 列表类型 集合类型 有序集合类型。 2.redis的应用场
阅读全文
摘要:需求: MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据? 1、限定 Redis 占用的内存 Redis 会根据自身数据淘汰策略,加载热数据到内存。 所以,计算一下 20W 数据大约占用的内存,然后设置一下 Redis 内存限制即可。 2、问题是什么
阅读全文
摘要:需求: 如何生成唯一的订单序列号? 格式按照:yyyyMMdd+两位业务码+10位的自增序列, 比如:20150101**99**0000000001。 思路: (1)获得日期很简单; (2)业务码是调用服务传入的参数; (3)使用Redis来实现10位的自增序列的保存和自增,使用serial.nu
阅读全文
摘要:一、需求 由于操作缓存与操作数据库不是原子的,非常有可能出现执行失败。 假设先写数据库,再淘汰缓存:第一步写数据库操作成功,第二步淘汰缓存失败,则会出现DB中是新数据,Cache中是旧数据,数据不一致。 假设先淘汰缓存,再写数据库:第一步淘汰缓存成功,第二步写数据库失败,则只会引发一次Cache m
阅读全文
摘要:缓存穿透 (请求数据缓存大量不命中) 缓存穿透是指查询一个一定不存在的数据,由于缓存不命中,并且出于容错考虑, 如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。 例如: 下图是一个比较典型的cache-storage架构,cache(例如me
阅读全文
摘要:一.Redis 持久化 Redis提供了多种不同级别的持久化方式:一种是RDB,另一种是AOF。 RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot)。 AOF 持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数
阅读全文
摘要:一、Redis概念 1、MySql+Memcached架构的问题 Memcached采用客户端-服务器的架构,客户端和服务器端的通讯使用自定义的协议标准,只要满足协议格式要求,客户端Library可以用任何语言实现。 Memcached服务器使用基于Slab的内存管理方式,有利于减少内存碎片和频繁分
阅读全文