一、Redis 有多快?Redis 是基于内存运行的高性能 K-V 数据库,官方提供的测试报告是单机可以支持约 10w/s 的 QPS
二、Redis 为什么这么快?(1)完全基于内存,数据存在内存中,绝大部分请求是纯粹的内存操作,非常快速,跟传统的磁盘文件数据存储相比,避免了通过磁盘 IO 读取到内存这部分的开销。(2)数据结构简单,对数据操作也简单。Redis 中的数据结构是专门进行设计的,每种数据结构都有一种或多种数据结构来支持。Redis 正是依赖这些灵活的数据结构,来提升读取和写入的性能。(3)采用单线程,省去了很多上下文切换的时间以及 CPU 消耗,不存在竞争条件,不用去
...
前言Redis 作为一款高性能数据库,表现在:它接收到一个键值对操作后, 能以微秒级别的速度找到数据,并快速完成操作。其高性能得奥秘来缘于以下两点:
Redis 是内存数据库, 所有操作都在内存上完成,内存的访问速度本身就很快
Reids 通过高效的数据结构来组织数据。
本章节可以让你在最短的时间了解如下内容:
Redis 支持五大数据类型
Redis 组织 Key-Value 数据结构
Redis5 大值类型数据存储结构
一、五大数据类型
String(字符串)
List(列表)
Set(集合)
Hash(哈希)
Zset(有序集合)
二、组织 Key-Value 数据结构在 re
...
大家一定非常熟悉如何利用 Docker 启动单个 Redis 容器用于开发环境,本文将介绍如何利用 Docker Compose 模板在本机和云端部署基于 Sentinel 的高可用 Redis 3 集群。
Redis 集群可以在一组 redis 节点之间实现高可用性和 sharding。今天我们重点围绕 master-slave 的高可用模式来进行讨论,在集群中会有 1 个 master 和多个 slave 节点。当 master 节点失效时,应选举出一个 slave 节点作为新的 master。然而 Redis 本身(包括它的很多客户端)没有实现自动故障发现并进行主备切换的能力,需要外
...
本文主要介绍一致性哈希的概念,以及在 Redis 中的 ShardedJedis 一致性哈希实现原理
1、非一致性哈希在讨论一致性哈希之前,先认识下”非一致性哈希”,例如 HashMap。当使用 HashMap 时,key 被均匀地映射到数组之上,映射方法就是利用 key 的 hash 与数组长度取模(通过&运算)。当 put 的数据超过负载因子 loadFactor×2Len 时,HashMap 会按照 2 被的容量扩容。新 put 进来的数据会通过与新数组的长度取模的方式进行映射。那之前已经映射的数据该怎么办?通过查看 HashMap 代码的 resize 方法会发现,每次扩容都会
...
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
...
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
...
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 是 Alibaba 开源的 Java 诊断工具,深受开发者喜爱。https://github.com/alibaba/arthas
Arthas 提供了非常丰富的关于调用拦截的命令,比如 trace/watch/monitor/tt 。但是很多时候我们在排查问题时,需要更多的线索,并不只是函数的参数和返回值。比如在一个 spring 应用里,想获取到 spring context 里的其它 bean。如果能随意获取到 spring bean,那就可以“为所欲为”了,下面介绍如何利用 Arthas 获取到 spring context。
搜索类
...