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分布式锁

分布式锁为解决分布式系统中多个应用同时访问同一个资源的问题。 分布式锁的使用场景一般是在两个场景下会防止对同一个资源的重复访问 提升效率 比如多个节点计算同一批任务,如果某个任务已经有节点在计算了,那其他节点就不用重复计算了,以免浪费计算资源。不过重复计算也没事,不会造成其他更大的损失,允许偶尔的失败。 保证正确性 这种情况对锁的要求就很高了,如果重复计算,会对正确性造成影响,不允许失败。 分布式锁支持的特性在这个技术不断更新迭代的情况下,分布式这个概念,在企业中的权重越来越高。谈及分布式时,不可避免一定会提到分布式锁,现阶段分布式锁的实现方式主流的有几种实现方式,Zookeepe ...

Redis大Value

大 key 和大 value 的危害,如何处理 Redis 的大 key 有什么危害?一个 key 的 value 较大时的情况,比如: 内存不均:单 value 较大时,可能会导致节点之间的内存使用不均匀,间接地影响 key 的部分和负载不均匀; 阻塞请求:redis 为单线程,单 value 较大读写需要较长的处理时间,会阻塞后续的请求处理; 阻塞网络:单 value 较大时会占用服务器网卡较多带宽,可能会影响该服务器上的其他 Redis 实例或者应用。 虽说答的是挺好的,但是我又随之产生了另一个疑惑,如果 redis 的 key 较长时,会产生什么样的影响呢?查了很多文章,说的都不是 ...

Redis(八)Zset结构和跳表SkipList

zset 是 redis 中一种有序、不重复的数据类型,每个元素都有一个分值,它可用于实现排行榜单,其底层采用压缩表 ziplist 或跳表 skiplist 的数据结构实现 Zset 的两种数据结构压缩表 ziplist当 redis 插入第一个元素时,同时满足以下条件,就会以 ziplist 创建跳表 节点数量<128 (可通过 server.zset_max_ziplist_entries 设置) 节点的长度<64(可通过 server.zset_max_ziplist_value 设置) 当选择用 ziplist 实现 zset 后,以后插入的节点若不满足以上任一个条件 ...

Redis(七)大key和大value

大 key 和大 value 的危害,如何处理 Redis 的大 key 有什么危害?一个 key 的 value 较大时的情况,比如: 内存不均:单 value 较大时,可能会导致节点之间的内存使用不均匀,间接地影响 key 的部分和负载不均匀; 阻塞请求:redis 为单线程,单 value 较大读写需要较长的处理时间,会阻塞后续的请求处理; 阻塞网络:单 value 较大时会占用服务器网卡较多带宽,可能会影响该服务器上的其他 Redis 实例或者应用。 虽说答的是挺好的,但是我又随之产生了另一个疑惑,如果 redis 的 key 较长时,会产生什么样的影响呢?查了很多文章,说的都不是 ...

Redis(六)分布式锁

分布式锁为解决分布式系统中多个应用同时访问同一个资源的问题。 分布式锁的使用场景一般是在两个场景下会防止对同一个资源的重复访问 提升效率 比如多个节点计算同一批任务,如果某个任务已经有节点在计算了,那其他节点就不用重复计算了,以免浪费计算资源。不过重复计算也没事,不会造成其他更大的损失,允许偶尔的失败。 保证正确性 这种情况对锁的要求就很高了,如果重复计算,会对正确性造成影响,不允许失败。 分布式锁支持的特性在这个技术不断更新迭代的情况下,分布式这个概念,在企业中的权重越来越高。谈及分布式时,不可避免一定会提到分布式锁,现阶段分布式锁的实现方式主流的有几种实现方式,Zookeepe ...

Redis(五)线程模型

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