盘点华为云gaussdb(for redis)六大秒级能力_华为云开发者联盟-编程思维

摘要:盘点高斯Redis的秒级能力,包括扩容、备份、删除、启动等。 本文分享自华为云社区《华为云GaussDB(for Redis)揭秘第20期:六大秒级能力盘点》,作者: 高斯Redis官方博客。 引言 大家经常用时间类指标来评估数据库能力,诸如RTO/RPO、扩容耗时、变更操作对业务影响的时长等等,在高可用需求日益迫切的当下,这些都是评价数据库能力的重要参考。在KV数据库领域,华为云Gaus

redis 原理_list_broadm-编程思维

List 数据结构 Redis 3.2 前,使用 压缩列表zipList 或 双向链表linkedList 当同时满足下面两个条件时,使用zipList存储数据 list保存的每个元素长度小于64字节 列表中数据个数少于512个 Redis 3.2 及之后的底层实现方式: quickList quickList 是一个基于 zipList 的双向链表, quickList 的每个节点都是一

redis 原理_hash_broadm-编程思维

Hash 数据结构 使用 ziplist 当同时满足下面两个条件时,使用 ziplist 存储数据 元素个数少于512个 (hash-max-ziplist-entries: 512) 每个元素长度小于64字节 (hash-max-ziplist-value: 64) 不满足上面的条件, 使用 hashtable Hash使用 ziplist 图解 可以看到, 当hash以ziplist编码

redis 原理_set_broadm-编程思维

Set数据结构 使用 intset 当同时满足下面两个条件时,使用 intset 存储数据 元素个数少于512个 (set-max-intset-entries: 512) 所有元素都是整数值 不满足上面的条件, 使用 hashtable intset 图解 //intset 的编码方式 #define INTSET_ENC_INT16 (sizeof(int16_t)) #define IN

redis 通用命令_broadm-编程思维

KEYS 语法: KEYS pattern 功能: 返回所有匹配 pattern 的键 可以使用该命令的Redis版本: 1.0.0 时间复杂度: O(N) N指的是在数据库中的键的数量 不建议在生成环境使用该命令,因为是扫描整个数据库的键查询,会造成阻塞 支持的全局样式模式: h?llo 匹配 hello,hallo并且hxllo h*llo 匹配 hllo 和 heeeello h[ae

redis 原理_string_broadm-编程思维

String 数据结构 首先我来看下, Redis 中 String 的数据结构: 我们称之为 SDS (Simple Dynamic String) 简单动态字符串 struct sdshdr { //记录buf数组中已经使用的字节数(等价于字符串的长度strlen) int len; //记录buf数组中未使用的字节数(用于动态扩容) int free;

redis中keys命令带来的线上性能问题__否极泰来-编程思维

起因 下午接到运维反馈,生产redis有个执行keys的命令请求太慢了,要两三秒才能响应 涉及命令如下: KEYS ttl_600::findHeadFootData-15349232-*-head 什么是keys命令? keys官方文档 http://www.redis.cn/commands/keys.html KEYS pattern 查找所有符合给定模式pattern(正则表达式)的

redis分布式锁-java实现__否极泰来-编程思维

1、为什么要使用分布式锁 如果在一个分布式系统中,我们从数据库中读取一个数据,然后修改保存,这种情况很容易遇到并发问题。因为读取和更新保存不是一个原子操作,在并发时就会导致数据的不正确。这种场景其实并不少见,比如电商秒杀活动,库存数量的更新就会遇到。如果是单机应用,直接使用本地锁就可以避免。如果是分布式应用,本地锁派不上用场,这时就需要引入分布式锁来解决。 由此可见分布式锁的目的其实很简单,就是

redis分布式锁-可重入锁__否极泰来-编程思维

redis分布式锁-可重入锁 上篇redis实现的分布式锁,有一个问题,它不可重入。 所谓不可重入锁,即若当前线程执行某个方法已经获取了该锁,那么在方法中尝试再次获取锁时,就会获取不到被阻塞。 同一个人拿一个锁 ,只能拿一次不能同时拿2次。 1、什么是可重入锁?它有什么作用? 可重入锁,也叫做递归锁,指的是在同一线程内,外层函数获得锁之后,内层递归函数仍然可以获取到该锁。 说白了就是同一个线程再

redis分布式锁-spring boot aop+自定义注解实现分布式锁__否极泰来-编程思维

接这这一篇redis分布式锁-java实现末尾,实现aop+自定义注解 实现分布式锁 1、为什么需要 声明式的分布式锁 编程式分布式锁每次实现都要单独实现,但业务量大功能复杂时,使用编程式分布式锁无疑是痛苦的,而声明式分布式锁不同,声明式分布式锁属于无侵入式,不会影响业务逻辑的实现。 我的为什么要用:使用简单,提升开发效率 2、怎么实现 使用spring aop + 自定义注解来实现 下面来看下

redis系列2:数据持久化提高可用性_hello-brand-编程思维

1 介绍 从上一篇的 《深刻理解高性能Redis的本质》 中可以知道, 我们经常在数据库层上加一层缓存(如Redis),来保证数据的访问效率。 这样性能确实也有了大幅度的提升,但是本身Redis也是一层服务,也存在宕机、故障的可能性。 一旦服务挂起,可能生产的后果包括如下几方面: 1、Redis的数据是存在内存中的,所以一旦挂起,内存中的数据会全部丢失。 2、I/O从内存层级迁移到磁盘层级,性能

centos7 安装 redis 7.0.2_broadm-编程思维

安装 Redis # 首先安装依赖gcc, 后面需要使用make编译redis yum install gcc -y # 进入 /usr/local/src 目录, 把源码下载到这里 cd /usr/local/src # 下载 redis 7.0.2 的源码,github被墙,可以使用国内的地址 wget http://download.redis.io/releases/redis-7

redis 是什么?_broadm-编程思维

Redis 的定义?   百度百科: Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。   中文官网: Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、

【故障公告】取代 memcached 的 redis 出现问题造成网站故障-编程思维团队-编程思维

6月19日开始,我们将博客站点的缓存服务器从 memcached 换成了 redis,稳定运行了3天,今天上午访问高峰突然出现问题,在 11:00-12:30 期间影响了网站的正常访问,由此给您带来麻烦,请求谅解。 在故障期间,日志中大量的等待响应超时错误 StackExchange.Redis.RedisTimeoutException: Timeout awaiting response 其

循序渐进 redis 分布式锁(以及何时不用它)_林子er_编程思维-编程思维

场景 假设我们有个批处理服务,实现逻辑大致是这样的: 用户在管理后台向批处理服务投递任务; 批处理服务将该任务写入数据库,立即返回; 批处理服务有启动单独线程定时从数据库获取一批未处理(或处理失败)的任务,投递到消息队列中; 批处理服务启动多个消费线程监听队列,从队列中拿到任务并处理; 消费线程处理完成(成功或者失败)后修改数据库中相应任务的状态; 流程如图: 现在我们单独看看上图中虚线框中的

【Redis】Redis Cluster-集群故障转移-编程思维

集群故障转移 节点下线 在集群定时任务clusterCron中,会遍历集群中的节点,对每个节点进行检查,判断节点是否下线。与节点下线相关的状态有两个,分别为CLUSTER_NODE_PFAIL和CLUSTER_NODE_FAIL。 CLUSTER_NODE_PFAIL:当前节点认为某个节点下线时,会将节点状态改为CLUSTER_NODE_PFAIL,由于可能存在误判,所以需要根据集群中的其他节点

【Redis】集群请求命令处理-编程思维

集群请求命令处理 在Redis的命令处理函数processCommand(server.c)中有对集群节点的处理,满足以下条件时进入集群节点处理逻辑中: 启用了集群模式,通过server.cluster_enabled判断 发送命令的节点不是主节点 收到的命令中包含了key参数或者命令是EXEC,EXEC命令与MULTI结合使用,用于执行事务 条件三的判断条件有些绕,!cmdHasMovable

【Redis】集群数据迁移-编程思维

Redis通过对KEY计算hash,将KEY映射到slot,集群中每个节点负责一部分slot的方式管理数据,slot最大个数为16384。 在集群节点对应的结构体变量clusterNode中可以看到slots数组,数组的大小为CLUSTER_SLOTS除以8,CLUSTER_SLOTS的值是16384: #define CLUSTER_SLOTS 16384 typedef struct cl