美文网首页
Redis数据结构与对象

Redis数据结构与对象

作者: 我是黄俊俊 | 来源:发表于2019-08-01 22:04 被阅读0次
    1. 了解常见的对象的数据结构及其实现的特点
    2. 掌握5种对象及其常见应用场景

    1. Redis对象的数据结构

    简单动态字符串:简单动态字符串是字符串对象的底层实现,其动态扩容,内存预分配,惰性空间释放,减少内存重分配次数


    image.png



    双端链表:双端链表是列表键对象的底层实现之一,模拟了双端队列。

    image.png


    字典:字典是集合对象和哈希对象的底层实现之一,redis的字典保存两个哈希表,一个平时使用,一个rehash时使用,并且采用渐进式rehash扩大/缩小容量,避免rehash时对服务器性能造成影响
    image.png


    跳表:跳表是有序集合对象的底层实现之一,节点的成员对象是一个指针,指向一个字符串对象,其字符串对象唯一,但是多个节点保存的分值却可以相同,所有节点按照分值从小到大排序,分值相同的节点按照字符串对象进行排序,redis采用有层数限制(最多5层)的跳表来实现有序集合,redis采用跳表而非红黑树等是因为其实现简单并且便于区间查找
    image.png


    整数集合:整数集合用于保存整数值,并且元素项较少时,作为集合底层实现之一,适合于数据项较少并且都为整数的集合对象,可以节约内存,并且可以保证不出现重复元素。
    image.png



    压缩列表:压缩列表适合于保存小整数和短字符串,并且列表项较少时,作为列表对象,哈希对象,有序集合对象的底层实现之一,可以节约内存

    image.png

    2. Redis对象

    redis是一个键值对内存型数据库,键值对都是由对象组成,键都是字符串对象,而值可以是字符串对象,列表对象,哈希对象,集合对象,有序集合对象

    1. 字符串对象
    2. 列表对象:列表应用比较广泛,用于保存多个元素,可重复,有先后顺序,可以使用列表实现好友列表,浏览商品等等,实现阻塞队列等等
    3. 哈希对象:哈希对象特别适合用于存储对象,键为对象id,值为json数据,存储用户信息,商品信息,统计点赞数,商品浏览数等。
    4. 集合对象:和list相比,当你需要存储一个列表数据,又不希望出现重复数据时或者想要利用集合的交并补运算时如求共同好友,共同关注问题,共同喜好等等时,适合使用集合对象
    5. 有序集合对象:和set相比,sorted set增加了一个权重参数score,使得集合中的元素能够按score进行有序排列。当你想要对某个东西排名,如对直播间在线用户列表各种礼物排行榜,对文章热度排名等等,适合使用有序集合对象

    相关文章

      网友评论

          本文标题:Redis数据结构与对象

          本文链接:https://www.haomeiwen.com/subject/kzacdctx.html