Redis
老於记
这个作者很懒,什么都没留下…
展开
-
一文回顾Redis五大对象(数据类型)
Redis 是一个高性能的分布式内存型数据库,在国内外各大互联网公司中都有着广泛的使用,即使是一些非互联网公司中也有着非常重要的适用场景,所以对 Redis 的掌握也成为后端工程师必备的基础技能,在面试中,Redis早已成为老生常谈的话题,而在实际工作中,我们更是每时每刻都需要和 Redis 打交道。因此熟练的掌握Redis技术栈的各种武功秘籍至关重要!Redis提供了五种主要的对象...原创 2020-04-21 09:26:00 · 186 阅读 · 0 评论 -
Redis数据结构——quicklist
之前的文章我们曾总结到了Redis数据结构——链表和Redis数据结构——压缩列表这两种数据结构,他们是Redis List(列表)对象的底层实现方式。但是考虑到链表的附加空间相对太高,prev 和 next 指针就要占去 16 个字节 (64bit 系统的指针是 8 个字节),另外每个节点的内存都是单独分配,会加剧内存的碎片化,影响内存管理效率。因此Redis3.2版本开始对列表数据结...原创 2020-04-03 09:54:00 · 240 阅读 · 0 评论 -
Redis对象——列表(List)
列表(list)类型是用来存储多个有序的字符串,列表中的每个字符串称为元素(element),一个列表最多可以存储232-1个元素。在Redis中,可以对列表两端插入(push)和弹出(pop),还可以获取指定范围的元素列表、获取指定索引下标的元素等。列表是一种比较灵活的数据结构,它可以充当栈和队列的角色,在实际开发上有很多应用场景。列表类型有两个特点:列表中的元素是有序的,这...原创 2020-04-10 08:56:00 · 659 阅读 · 0 评论 -
Redis对象——有序集合(ZSet)
有序集合类型 (Sorted Set或ZSet) 相比于集合类型多了一个排序属性 score(分值),对于有序集合 ZSet 来说,每个存储元素相当于有两个值组成的,一个是有序结合的元素值,一个是排序值。有序集合保留了集合不能有重复成员的特性(分值可以重复),但不同的是,有序集合中的元素可以排序。一、内部实现有序集合是由 ziplist (压缩列表) 或 skiplist (跳跃...原创 2020-04-17 09:22:00 · 342 阅读 · 0 评论 -
Redis对象——集合(Set)
集合类型 (Set) 是一个无序并唯一的键值集合。它的存储顺序不会按照插入的先后顺序进行存储。集合类型和列表类型的区别如下:列表可以存储重复元素,集合只能存储非重复元素;列表是按照元素的先后顺序存储元素的,而集合则是无序方式存储元素的。一个集合最多可以存储232-1个元素。Redis除了支持集合内的增删改查,同时还支持多个集合取交集、并集、差集,合理地使用好集合类型,能在实际...原创 2020-04-14 09:11:00 · 819 阅读 · 0 评论 -
Redis对象——字符串
前言 上一篇文章Redis之对象篇——Redis对象系统简介简单介绍了Redis的对象系统。Redis使用对象来表示数据库中的键和值每个对象都由一个redisObject结构表示,该结构中和保存数据有关的三个属性分别是type属性、 encoding属性和ptr属性。typedef struct redisObiect{ //类型 unsign...原创 2019-10-15 09:20:25 · 216 阅读 · 0 评论 -
图解Redis之数据结构篇——简单动态字符串SDS
文章导航-readme图解Redis之数据结构篇——简单动态字符串SDS前言相信用过Redis的人都知道,Redis提供了一个逻辑上的对象系统构建了一个键值对数据库以供客户端用户使用。这个对象系统包括字符串对象,哈希对象,列表对象,集合对象,有序集合对象等。但是Redis面向内存并没有直接使用这些对象。而是使用了简单动态字符串,链表,字典(散列表),跳跃表,整数集合,压缩列表这...原创 2018-11-14 14:46:00 · 250 阅读 · 0 评论 -
图解Redis之数据结构篇——链表
文章导航-readme前言Redis链表为双向无环链表!图解Redis之数据结构篇——简单动态字符串SDS提到Redis使用了简单动态字符串,链表,字典(散列表),跳跃表,整数集合,压缩列表这些数据结构来操作内存,并且简单介绍了Redis简单动态字符串。本篇文章我们继续来分析链表。链表是一种非常常见的数据结构,在Redis中使用非常广泛,列表对象的底层实现之...原创 2018-11-16 08:42:00 · 311 阅读 · 0 评论 -
图解Redis之数据结构篇——字典
文章导航-readme前言字典在Redis中的应用非常广泛,数据库与哈希对象的底层实现就是字典。系列文章图解Redis之数据结构篇——简单动态字符串SDS图解Redis之数据结构篇——链表图解Redis之数据结构篇——字典一、复习散列表1.1 散列表散列表(哈希表),其思想主要是基于数组支持按照下标随机访问数据时间复杂度为O(1)的特性。可是说是...原创 2018-11-20 16:33:00 · 365 阅读 · 0 评论 -
图解Redis之数据结构篇——跳跃表
文章导航-readme前言跳跃表是一种有序的数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。这么说,我们可能很难理解,我们可以先回忆一下链表。一、复习跳跃表1.1 什么是跳跃表对于一个单链表来讲,即便链表中存储的数据是有序的,如果我们要想在其中查找某个数据,也只能从头到尾遍历链表。这样查找效率就会很低,时间复杂度会很高,是...原创 2019-07-26 08:56:00 · 810 阅读 · 0 评论 -
图解Redis之数据结构篇——整数集合
文章导航-readme前言整数集合(intset)并不是一个基础的数据结构,而是Redis自己设计的一种存储结构,是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时, Redis i就会使用整数集合作为集合键的底层实现。一、整数集合实现整数集合(intset)是Redis用于保存整数值的集合抽象数据结构,它可以保存类型为int16_t、...原创 2019-07-30 09:36:00 · 270 阅读 · 0 评论 -
Redis之对象篇——Redis对象系统简介
文章导航-readmeRedis之对象篇——Redis对象系统简介前言之前几篇文章,简单介绍 Redis用到的所有主要数据结构,简单动态字符串(SDS)、双端链表、字典、压缩列表、整数集合、跳跃表。图解Redis之数据结构篇——简单动态字符串SDS图解Redis之数据结构篇——链表图解Redis之数据结构篇——字典图解Redis之数据结构篇——跳跃表图解Re...原创 2019-08-21 07:56:00 · 459 阅读 · 0 评论 -
图解Redis之数据结构篇——压缩列表
文章导航-readme前言同整数集合一样压缩列表也不是基础数据结构,而是 Redis 自己设计的一种数据存储结构。它有点儿类似数组,通过一片连续的内存空间,来存储数据。不过,它跟数组不同的一点是,它允许存储的数据大小不同。一、压缩列表听到“压缩”两个字,直观的反应就是节省内存。之所以说这种存储结构节省内存,是相较于数组的存储思路而言的。我们知道,数组要求每个元素的大...原创 2019-08-06 07:50:00 · 261 阅读 · 0 评论