0

不是吧?为了加快速度,Redis竟做了这么“疯狂”的设计

前言列表对象是 Redis 中 5 种基础数据类型之一,在 Redis 3.2 版本之前,列表对象底层存储结构有两种:linkedlist(双端列表)和 ziplist(压缩列表),而在 Redis 3.2 版本之后,列表对象底层存储结构只有一种:quicklist(快速列表),难道通过精心设计的 ziplist 最终被 Redis 抛弃了吗?列表对象同字符串对象一样,列表对象到底使用哪一种数据结构来进行存储也是通过编码来进行区分:编码属性描述object encoding命令返回值OBJ_ENCODING_LINKEDLIST使用 linkedlist 实现列表对象linkedlistOBJ...

阅读全文>>

0

redis存json数据时选择string还是hash

我们在缓存json数据到redis时经常会面临是选择string类型还是选择hash类型去存储。接下来我从占用空间和IO两方面来分析这两种类型的优势。1、占用空间根据数据结构的共识我们知道hashtable类型是要比string类型更占用空间, 而ziplist类型与string类型占用的空间基本相差不大。如下图就是ziplist的存储的格式那我们接下来分别分析redis的string和hash类型占用空间方面的知识string类型: string类型当然如其名,如果json数据以string类型去存储,那么它的空间占用方面肯定是相当的。hash类型: redis对hash类型是有两种编码方式...

阅读全文>>

0

Redis高可用架构演进

Redis系列第1篇Redis是目前使用最广泛的缓存程序之一,也被应用于多种场景,例如数据缓存、分布式锁等,Redis官方提供了多种部署架构,以满足不同应用场景下对于高可用和扩展性的要求。01单节点(single)单节点的部署是最简单的,只要启动一个redis进程就可以了,但是不具备高可用性,一般生产环境不建议使用,其主要有以下问题:单节点,一旦出问题,服务将会不可用【1】单节点读能力有限,无法扩展【2】单节点写能力有限,无法扩展【3】单节点的存储能力受到单机的限制【4】02主从复制(master-slave)由于单节点服务不可用问题【1】,Redis提供了主从复制的功能,使用主从复制模式,一...

阅读全文>>

0

Redis集群的5种使用方式,及各自优缺点对比分析

本文主要针对 Redis 常见的几种使用方式及其优缺点展开分析。一、常见使用方式Redis 的几种常见使用方式包括:Redis 单副本Redis 多副本(主从)Redis Sentinel(哨兵)Redis ClusterRedis 自研二、各种使用方式的优缺点1、Redis 单副本Redis 单副本,采用单个 Redis 节点部署架构,没有备用节点实时同步数据,不提供数据持久化和备份策略,适用于数据可靠性要求不高的纯缓存业务场景。优点:架构简单,部署方便;高性价比:缓存使用时无需备用节点(单实例可用性可以用 supervisor 或 crontab 保证),当然为了满足业务的高可用性,也可以...

阅读全文>>

0

腾讯开源分布式存储系统Tendis,可完全兼容Redis

近日,腾讯宣布开源一个与 Redis 协议完全兼容的高性能分布式存储系统 Tendis。据悉,Tendis 是腾讯互娱 CROS DBA 团队 & 腾讯云数据库团队自主设计和研发的分布式高性能 KV 存储数据库,兼容 Redis 核心数据结构与接口,可提供大容量、低成本、强持久化的数据库能力,适用于兼容 Redis 协议、需要大容量且较高访问性能的温冷数据存储场景。Tendis 目前已经被应用到腾讯内、外部大型项目中。据项目官方文档介绍,Tendis 的主要特性包括:兼容 Redis 协议。完全兼容 redis 协议,支持 redis 主要数据结构和接口,兼容大部分原生Redis命令。...

阅读全文>>

0

Redis缓存机制与应用

Redis是目前最为主流的缓存技术之一,Redis基于内存操作从而拥有强大的性能,可以达到每秒10万次的请求,可以说是一款非常强大的缓存技术了。本文分为三部分:基础知识介绍常用技术讲解与缓存机制使用场景、缓存问题基础知识介绍NoSQL概述什么是NoSQL?NoSQL = Not Only SQL (不仅仅是SQL)关系型数据库:表格 ,行 ,列 非关系型数据库:没有固定的查询语言,键值对存储,列存储,文档存储随着web2.0互联网的诞生!传统的关系型数据库很难对付web2.0时代!尤其是超大规模的高并发的社区。NoSQL 特点1、方便扩展2、大数据量高性能(Redis 一秒写8万次,读取11万...

阅读全文>>

0

Redis持久化问题定位与优化技巧

今天主要分享继Redis持久化方式RDB、AOF之后的一些常用的Redis问题定位于优化方式。这里主要CPU、内存、磁盘在三个维度去分析问题! Fork操作当Redis做RDB或AOF重写时,一个必不可少的操作就是执行fork操作创建子进程,对于大多数操作系统来说fork是个重量级操作虽然fork创建的子进程不需要拷贝父进程的物理内存空间,但是会复制父进程的空间内存页表。例如对于10GB的Redis进程,需要复制大约20MB的内存页表,因此fork 操作耗时跟进程总内存量息息相关,如果使用虚拟化技术,特别是Xen虚拟 机,fork操作会更耗时在做 RDB 或 AOF 重写时, fork 是必不...

阅读全文>>

0

Redis两种持久化机制RDB和AOF详解(面试常问,工作常用)

redis是一个内存数据库,数据保存在内存中,但是我们都知道内存的数据变化是很快的,也容易发生丢失。幸好Redis还为我们提供了持久化的机制,分别是RDB(Redis DataBase)和AOF(Append Only File)。在这里假设你已经了解了redis的基础语法,某字母网站都有很好的教程,可以去看。基本使用的文章就不写了,都是一些常用的命令。下面针对这两种方式来介绍一下。由浅入深。一、持久化流程既然redis的数据可以保存在磁盘上,那么这个流程是什么样的呢?要有下面五个过程:(1)客户端向服务端发送写操作(数据在客户端的内存中)。(2)数据库服务端接收到写请求的数据(数据在服务端的...

阅读全文>>

0

一万字详解 Redis Cluster Gossip 协议

大家好,我是历小冰,今天来讲一下 Reids Cluster 的 Gossip 协议和集群操作,文章的思维导图如下所示。集群模式和 Gossip 简介对于数据存储领域,当数据量或者请求流量大到一定程度后,就必然会引入分布式。比如 Redis,虽然其单机性能十分优秀,但是因为下列原因时,也不得不引入集群。单机无法保证高可用,需要引入多实例来提供高可用性单机能够提供高达 8W 左右的QPS,再高的QPS则需要引入多实例单机能够支持的数据量有限,处理更多的数据需要引入多实例;单机所处理的网络流量已经超过服务器的网卡的上限值,需要引入多实例来分流。有集群,集群往往需要维护一定的元数据,比如实例的ip地...

阅读全文>>

0

Redis学习知识点

1.Redis的应用场景? 1.Token令牌的生成 2.短信验证码的code 3.可以实现缓存查询数据 a. 减轻我们的数据库的访问压力 Redis与mysql数据库不同步的问题 4.Redis帮助实现计数器 5.分布式锁 6.延迟操作 分布式消息中间件 注意:Redis官方是没有windows版本的,只有linux,这是因为 在nio中epoll只有linux操作系统独有2.Redis线程模型? Redis的采用NIO的IO多路复用原则,也就是一个线程维护多个不同的Redis客户端连接,从而提高处理 并发效率和保证线程安全问题.底层采用linux操作系统的epoll技术避免空轮...

阅读全文>>