Redis
Redis缓存库
住手丶让我来
我是革命一块砖,哪里需要哪里搬!
展开
-
Redis分布式锁原理
一、分布式锁原理 分布式锁,是控制分布式系统之间同步访问共享资源的一种方式。在分布式系统中,常常需要协调他们的动作。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰来保证一致性,在这种情况下,便需要使用到分布式锁。使用setnx、getset、expire、del这4个redis命令实现:setnx 是『SET if Not eXists』的简写。 命令格式:SETNX key value原创 2020-08-20 16:50:55 · 424 阅读 · 0 评论 -
Redis的对象底层实现
一、前言 Redis并没有直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统,这个系统包含字符串对象、列表对象、哈希对象、集合对象和有序集合对象这五种类型的对象,每种对象都用到了至少一种我们前面所介绍的数据结构。 通过这五种不同类型的对象,Redis可以在执行命令之前,根据对象的类型来判断一个对象是否可以执行给定的命令。使用对象的另一个好处是,我们可以针对不同的使用场景,为对象设置多种原创 2020-05-13 09:41:08 · 199 阅读 · 0 评论 -
Redis的字典底层实现
一、前言 字典,又称为符号表(sy mbol table)、关联数组(associative array )或映射(map),是一种用于保存键值对(key -value pair)的抽象数据结构。在字典中,一个键(key )可以和一个值(value)进行关联(或者说将键映射为值),这些关联的键和值就称为键值对。 字典中的每个键都是独一无二的,程序可以在字典中根据键查找与之关联的值,或者通过键来更新值,又或者根据键原创 2020-05-11 15:36:57 · 638 阅读 · 1 评论 -
Redis的整数集合底层原理
一、前言 整数集合(intset)是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时,Redis就会使用整数集合作为集合键的底层实现。 举个例子,如果我们创建一个只包含五个元素的集合键,并且集合中的所有元素都是整数值,那么这个集合键的底层实现就会是整数集合:redis&g...原创 2020-05-08 15:26:22 · 258 阅读 · 0 评论 -
Redis的跳跃表底层原理
一、前言 跳跃表(skiplist)是一种有序数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。跳跃表支持平均O(logN)、最坏O(N)复杂度的节点查找,还可以通过顺序性操作来批量处理节点。 在大部分情况下,跳跃表的效率可以和平衡树相媲美,并且因为跳跃表的实现比平衡树...原创 2020-05-08 10:46:08 · 3643 阅读 · 0 评论 -
Redis的链表底层原理
一、前言 链表提供了高效的节点重排能力,以及顺序性的节点访问方式,并且可以通过增删节点来灵活地调整链表的长度。 作为一种常用数据结构,链表内置在很多高级的编程语言里面,因为Redis使用的C语言并没有内置这种数据结构,所以Redis构建了自己的链表实现。二、链表的使用场景 &n...原创 2020-05-07 16:16:36 · 418 阅读 · 0 评论 -
Redis的简单动态字符串(SDS)
一、前言 Redis没有直接使用C语言传统的字符串表示(以空字符结尾的字符数组,以下简称C字符串),而是自己构建了一种名为简单动态字符串(simple dy namic string,SDS)的抽象类型,并将SDS用作Redis的默认字符串表示。 在Redis里面,C字符串只会作为字符串字面量(stri...原创 2020-05-07 10:43:59 · 341 阅读 · 1 评论 -
Spring中使用Redis之集合类型
一、Redis集合简介Redis的集合不是严格线性结构,而是严格哈希表结构,它的内部会根据hash分子来存储和查找数据,理论上严格集合可以存储42亿个元素,因为采用哈希表结构,所以对于Redis集合的插入,删除,和查找的复杂度都是O(1),只是我们需要注意三点:对于集合而言,它的每一个元素都是不能重复的,当插入相同记录的时候会失败。集合是无序的。集合的每一个元素都是String数据类型。...原创 2019-04-25 23:55:58 · 467 阅读 · 0 评论 -
Spring中使用Redis之有序集合类型
一、Redis有序集合简介有序集合和集合类似,只是说它的有序的,和无序集合的主要区别在于每一个元素除了值以外,它还会多一个分数。分数是一个浮点数,在Java中是使用双精度来表示的,根据分数,Redis就可以支持对分数从小到大或者从大到小到排序。这里和无序集合一样,对于每一个元素都是唯一到,但是对于不同元素而言,它的分数可以是一样的。元素也String数据类型,也是一种基于Hash的存储结构。集合...原创 2019-04-27 15:42:46 · 1459 阅读 · 0 评论 -
Spring中使用Redis之基数(HyperLogLog)类型
一、Redis基数(HyperLogLog)简介基数是一种算法,基数并表示存储元素,存储元素小号内存空间比较大,而是某一个有重复元素的数据的集合(一般是很大的数据集合)评估所需要的空间单元数,所以它没有办法进行存储。举个例子,一本英文著作由数百万个单词组成你的内存却不足以存储它们,那么我们分析一下业务。英文单词本身数有限的,在这本书中的几百万个单词中有许多重复的单词,除去重复的单词,这本书也就是...原创 2019-04-25 22:22:16 · 448 阅读 · 0 评论 -
Spring中使用Redis之链表类型
一、Redis链表简介链表结构是Redis常用的结构,他可以存储多个字符串,并且它是有序的,能够存储超过40亿个节点。Redis链表是双向的,一次它可以从左到右,也可以从右到左遍历它存储的节点。但是使用链表结构就意味着读性能的丧失,所以要在大量数据中找到一个节点的操作性能是不佳的,而链表结构的优势在于插入和输出的便利性。二、链表的基本命令【1】lpush key node1 [node2 …...原创 2019-04-25 22:07:01 · 188 阅读 · 0 评论 -
Spring中使用Redis之哈希类型
一、Redis哈希简介Redis中的哈希结果就如同Java中的Map一样,一个对象里面有许多键值对,它是特别适合存储对象的,如果内存足够大,那么一个Redis的hash结构可以存储40多亿个键值对。一般而言,不会使用那么大的一个键值对,所以我们只需要认为Redis可以存储很多的键值对。在Redis中,hash是一个String类型的field和value的映射表,因此我们存储的数据实际在Redi...原创 2019-04-24 22:11:15 · 1882 阅读 · 0 评论 -
Spring中使用Redis之字符串类型
一、Redis简介原创 2019-04-24 22:09:14 · 346 阅读 · 0 评论 -
在Window环境下搭建一个三主三从模式的Redis集群
在Window环境下搭建一个三主三从模式的Redis集群原创 2018-12-10 23:41:09 · 940 阅读 · 0 评论