美文网首页Java速记手册
Redis01——Redis究竟支持哪些数据结构

Redis01——Redis究竟支持哪些数据结构

作者: Java面典 | 来源:发表于2020-02-18 18:14 被阅读0次

    Redis已经越来越多地应用到互联网技术中,而关于Redis的相关问题,也成为面试中必不可少的一部分,本文开始将会逐渐把我了解到的关于Redis的一些面试问题整理出来,供各位参考,如有不对之处,烦请指正。

    简介

    Redis共支持五种数据结构,分别是string(字符串)、hash(字典)、list(列表)、set(集合)、zset(有序集合)。

    详解

    string(字符串)

    数据结构:Redis中string数据结构为动态字符数组,采用预分配冗余空间的方式来减少内存分配。

    扩容机制:当字符串长度小于1MB时,扩容都是加倍现有空间。当字符串长度大于1MB时,每次扩容1MB,最大长度为512MB。

    计数:当值为整数时,可以进行自增操作。范围为signed long 的最大值和最小值之间。

    hash(字典)

    数据结构:Redis中list相当于Java的HashMap。

    渐进式rehash:在Redis中针对hash冲突采用的是渐进式rehash操作。渐进式rehash会同时保留新旧两个hash结构,查询时同时查询两个hash结构。在后续的定时任务及hash操作的过程中完成从旧hash结构,迁移到新hash结构的过程。

    list(列表)

    数据结构:Redis中list相当于Java的LinkedList,所以写操作时间复杂度为O(1),读操作时间复杂度为O(n)。

    set(集合)

    数据结构:Redis中set相当于Java的HashSet。

    zset(有序集合)

    数据结构:Redis中zset类似于一个带权值(score)的SortedSet。其内部通过跳跃列表(关于跳跃列表,将会在后期的文章中进行分享)实现。

    总结

    1.通用规则

    hash、list、set、zset这四种数据结构为容器型数据结构,所有容器型数据结构遵守以下规则:

    1. create if not exists:当容器不存在时,需先创建一个容器,再进行操作;

    2. drop if not elements:当容器内无元素时,会立即删除容器,释放内存。

    2.过期时间

    过期时间以对象为单位,如整个hash结构。

    当string被set方法修改后,过期时间将会失效。

    相关文章

      网友评论

        本文标题:Redis01——Redis究竟支持哪些数据结构

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