这次彻底读透 Redis】的更多相关文章

1. Redis 管道 我们通常使用 Redis 的方式是,发送命令,命令排队,Redis 执行,然后返回结果,这个过程称为Round trip time(简称RTT, 往返时间).但是如果有多条命令需要执行时,需要消耗 N 次 RTT,经过 N 次 IO 传输,这样效率明显很低. 于是 Redis 管道(pipeline)便产生了,一次请求/响应服务器能实现处理新的请求即使旧的请求还未被响应.这样就可以将多个命令发送到服务器,而不用等待回复,最后在一个步骤中读取该答复.这就是管道(pipeli…
Redis 是一个开源( BSD 许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件.它支持的数据类型很丰富,如字符串.链表.集合.以及散列等,并且还支持多种排序功能. 什么叫持久化? 用一句话可以将持久化概括为:将数据(如内存中的对象)保存到可永久保存的存储设备中. 持久化的主要应用是将内存中的对象存储在数据库中,或者存储在磁盘文件中. XML 数据文件中等等. 也可以从如下两个层面来理解持久化: 应用层:如果关闭( Close )你的应用,然后重新启动则先前的数据依然存在…
少点代码,多点头发 本文已经被GitHub收录,欢迎大家踊跃star 和 issues. https://github.com/midou-tech/articles 入职第一周,我被坑了 最近刚入职新公司,本来想着这刚来新公司,一般都是熟悉熟悉公司同事,看看组内工程文档,找几个demo自己练练手. 咳咳咳,万万没想到啊,一切都是我以为的,我还是太嫩了. 入职那天下午,组长给我丢了几个文档,让我看下这个这些工程的缓存系统问题,让我把redis升级为哨兵模式. 接到任务的我,内心是懵逼的. 第一.…
为什么要分布式 Redis是一款开源的基于内存的K-V型数据库,因为内存访问速度快,一般被用来做系统的缓存. Redis作为单机部署能够支持业务简单,数据量不大的系统需求,但在实际应用中,一旦系统规模上来,单机的Redis就会遇到下面的挑战: 伸缩性.系统随着长期运行与业务增长,对Redis存储的数据量需求也越来越大,单机必然受限于服务器的内存与磁盘大小. 高性能.系统规模变大后,对Redis的吞吐量需求也会提高,而单机的吞吐量必然有限,这种情况会影响整体系统的性能. 高可用.Redis持久化机…
Redis是一个基于内存中的数据结构存储系统,可以用作数据库.缓存和消息中间件.Redis支持五种常见对象类型:字符串(String).哈希(Hash).列表(List).集合(Set)以及有序集合(Zset),我们在日常工作中也会经常使用它们.知其然,更要知其所以然,本文将会带你读懂这五种常见对象类型的底层数据结构. 本文主要内容参考自<Redis设计与实现> 对象类型和编码 Redis使用对象来存储键和值的,在Redis中,每个对象都由redisObject结构表示.redisObject…
目录结构如下: 简介 Redis是一个高性能的key-value数据库.Redis对数据的操作都是原子性的. 优缺点 优点: 基于内存操作,内存读写速度快. Redis是单线程的,避免线程切换开销及多线程的竞争问题.单线程是指在处理网络请求(一个或多个redis客户端连接)的时候只有一个线程来处理,redis运行时不止有一个线程,数据持久化或者向slave同步aof时会另起线程. 支持多种数据类型,包括String.Hash.List.Set.ZSet等 支持持久化.Redis支持RDB和AOF…
准备将之前攒下的书先看一遍,主要是有个大概的了解,以后用的时候也知道在哪里找.所以准备开几篇共读的帖子,激励自己多看一些书. Redis 基于 简单动态字符串(SDS).双端链表.字典.压缩列表.整数集合等基础的数据结构,创建了一个对象系统,这个对象系统包含:字符串对象(String).列表对象(List).集合对象(Set).有序集合对象(Zset).哈希对象(Hash) 5种数据对象类型.但是这5种对象类型,其内部的基础的存储结构 并不是 一对一的一种,而是每一种包含了至少两种数据结构. 我…
上一章我们讲了 redis 基本类型的数据结构 和 对象系统 ,这篇来说一下单机redis 的知识点. 一.数据库 一个数据库在redis中就有一个结构体,而数据库的结构体是由redisServer这个结构体持有. 也就是redis服务器对应一个redisService 结构体,一个redisServer结构体持有多个redisDB数组,并且存储了数组的大小. struct redisServer { ... // 一个数组保存服务器所有的数据库 redisDb *db; // 服务器的数据库的…
压缩列表简介 压缩列表(ziplist)是由一个连续内存组成的顺序型数据结构.一个压缩列表可以包含任意多个节点,每个节点上可以保存一个字节数组或整数值.它是Redis为了节省内存空间而开发的. 压缩列表(ziplist)是哈希(hash)和有序集合(zset)的内部编码之一.当哈希(hash)中的元素个数比较少并且每个元素的值占用空间比较小的时候,Redis就会使用压缩列表做为哈希的内部编码.当有序集合(zset)中的元素个数比较少并且每个元素的值占用空间比较小的时候,Redis也会使用压缩列表…
原地址:https://www.jianshu.com/p/0d8fc3df3647?from=timeline&isappinstalled=0 很久之前,我在<effective java>上看过Builder构建器相关的内容,但实际开发中不经常用.后来,在项目中使用了lombok,发现它有一个注解“@Builder”,就是为java bean生成一个构建器.于是,回头重新复习了下相关知识,整理如下. 1. lombok使用样例 // 创建名为Officer的java bean @…