Redis(五)线程模型

一、Redis 有多快?Redis 是基于内存运行的高性能 K-V 数据库,官方提供的测试报告是单机可以支持约 10w/s 的 QPS 二、Redis 为什么这么快?(1)完全基于内存,数据存在内存中,绝大部分请求是纯粹的内存操作,非常快速,跟传统的磁盘文件数据存储相比,避免了通过磁盘 IO 读取到内存这部分的开销。(2)数据结构简单,对数据操作也简单。Redis 中的数据结构是专门进行设计的,每种数据结构都有一种或多种数据结构来支持。Redis 正是依赖这些灵活的数据结构,来提升读取和写入的性能。(3)采用单线程,省去了很多上下文切换的时间以及 CPU 消耗,不存在竞争条件,不用去 ...

Redis(四)存储结构

前言Redis 作为一款高性能数据库,表现在:它接收到一个键值对操作后, 能以微秒级别的速度找到数据,并快速完成操作。其高性能得奥秘来缘于以下两点: Redis 是内存数据库, 所有操作都在内存上完成,内存的访问速度本身就很快 Reids 通过高效的数据结构来组织数据。 本章节可以让你在最短的时间了解如下内容: Redis 支持五大数据类型 Redis 组织 Key-Value 数据结构 Redis5 大值类型数据存储结构 一、五大数据类型 String(字符串) List(列表) Set(集合) Hash(哈希) Zset(有序集合) 二、组织 Key-Value 数据结构在 re ...

Redis(三)部署Sentinel高可用集群

大家一定非常熟悉如何利用 Docker 启动单个 Redis 容器用于开发环境,本文将介绍如何利用 Docker Compose 模板在本机和云端部署基于 Sentinel 的高可用 Redis 3 集群。 Redis 集群可以在一组 redis 节点之间实现高可用性和 sharding。今天我们重点围绕 master-slave 的高可用模式来进行讨论,在集群中会有 1 个 master 和多个 slave 节点。当 master 节点失效时,应选举出一个 slave 节点作为新的 master。然而 Redis 本身(包括它的很多客户端)没有实现自动故障发现并进行主备切换的能力,需要外 ...

Redis(二)ShardedJedis一致性哈希

本文主要介绍一致性哈希的概念,以及在 Redis 中的 ShardedJedis 一致性哈希实现原理 1、非一致性哈希在讨论一致性哈希之前,先认识下”非一致性哈希”,例如 HashMap。当使用 HashMap 时,key 被均匀地映射到数组之上,映射方法就是利用 key 的 hash 与数组长度取模(通过&运算)。当 put 的数据超过负载因子 loadFactor×2Len 时,HashMap 会按照 2 被的容量扩容。新 put 进来的数据会通过与新数组的长度取模的方式进行映射。那之前已经映射的数据该怎么办?通过查看 HashMap 代码的 resize 方法会发现,每次扩容都会 ...

Redis(一)基础数据类型

REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统。Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。 Redis 简介Redis 是完全开源免费的,遵守 BSD 协议,是一个高性能的 key-va ...

HBase Docker搭建

docker 脚本可以从链接获取修改 docker-compse.xml 文件,注意端口映射 version: "2" services: zookeeper-1: container_name: zookeeper-1 networks: ["vnet"] hostname: zookeeper-1.vnet image: smizy/zookeeper:3.4-alpine ports: ["2181:2181"] environment: - SERV ...

HBase(二)Docker搭建

docker 脚本可以从链接获取修改 docker-compse.xml 文件,注意端口映射 version: "2" services: zookeeper-1: container_name: zookeeper-1 networks: ["vnet"] hostname: zookeeper-1.vnet image: smizy/zookeeper:3.4-alpine ports: ["2181:2181"] environment: - SERV ...

Arthas获取Spring Context

Arthas 是 Alibaba 开源的 Java 诊断工具,深受开发者喜爱。https://github.com/alibaba/arthas Arthas 提供了非常丰富的关于调用拦截的命令,比如 trace/watch/monitor/tt 。但是很多时候我们在排查问题时,需要更多的线索,并不只是函数的参数和返回值。比如在一个 spring 应用里,想获取到 spring context 里的其它 bean。如果能随意获取到 spring bean,那就可以“为所欲为”了,下面介绍如何利用 Arthas 获取到 spring context。 搜索类 ...