「Redis」基于Redis的分布式锁实现

SETNX命令简介

  • SETNX key value返回(1:key的值被设置,0:key的值没被设置),将key的值设为value,并且仅当key不存在。
  • 锁的key为目标数据的唯一键,value为锁的期望超时时间点;
  • 基于Redis实现的分布式锁,主要基于redissetnx(set if not exist)命令;

「Redis」Redis穿透、击穿、雪崩和数据一致性

1. 缓存穿透

访问一个不存在的key,缓存不起作用,请求会穿透到DB,流量大时DB会挂掉。

  • 解决方案:
    1. 采用布隆过滤器(bloomfilter就类似于一个hash set),使用一个足够大的bitmap,用于存储可能访问的key,不存在的key直接被过滤;
    2. 访问key未在DB查询到值,也将空值写进缓存,但可以设置较短过期时间。
    3. 接口限流与熔断、降级
    4. 使用互斥锁排队(分布式环境中要使用分布式锁,单机的话用普通的锁(synchronized、Lock))

「Redis」深入学习Redis及集群

Redis本质上是一个Key-Value类型的内存数据库,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过10万次读写操作,是已知性能最快的Key-Value DB。

「MySQL」MySQL慢日志查询分析

同大多数关系型数据库一样,日志文件是MySQL数据库的重要组成部分。MySQL有几种不同的日志文件,通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等。这些日志可以帮助我们定位mysqld内部发生的事件,数据库性能故障,记录数据的变更历史,用户恢复数据库等等。

「ElasticStack」ElasticSearch聚合分析与数据建模

1. ElasticSearch 中的聚合分析

聚合分析,英文Aggregation,是 ES 除了搜索功能之外提供的针对 ES 数据进行统计分析的功能。

  • 特点:
    • ① 功能丰富,可满足大部分分析需求;
    • ② 实时性高,所有计算结果实时返回。
  • 基于分析规则的不同,ES 将聚合分析主要划分为以下 4 种:
    1. Metric: 指标分析类型,如:计算最值,平均值等;
    2. Bucket: 分桶类型,类似于group by语法,根据一定规则划分为若干个桶分类;
    3. Pipeline: 管道分析类型,基于上一级的聚合分析结果进行再分析;
    4. Matrix: 矩阵分析类型。

「ElasticStack」ElasticSearch分布式特性 与 Search机制

1. ElasticSearch 的分布式特性

1.1 分布式介绍

  1. ES支持集群模式,即一个分布式系统。其好处主要有以下 2 个:
    1. 可增大系统容量。比如:内存、磁盘的增加使得ES能够支持PB级别的数据;
    2. 提高了系统可用性。即使一部分节点停止服务,集群依然可以正常对外服务。
  2. ES集群由多个ES实例构成。 + 不同集群通过集群名字来区分,通过配置文件elasticsearch.yml中的cluster.name可以修改,默认为elasticsearch + 每个ES实例的本质,其实是一个JVM进程,且有自己的名字,通过配置文件中的node.name可以修改。