基础数据结构包含:String, list, hash, set, zset(SortedSet)
高级数据结构包含:Bitmapsm, HyperLogLogs, GEO

1.可变的字节数组 - String
Redis的字符串是动态字符串,是可以修改的字符串,内部结构实现上类似Java的ArrayList,采用预分配冗余空间的方式来减少内存的频繁分配。

2.列表数据结构 - list
列表的存储结构用的是链表而不是数组,而且是双向链表,因为是链表,所以随机定位性能比较弱,首尾插入删除性能较优。
如果list的列表长度很长,使用时一定要挂按住链表相关操作的时间复杂度。

3.二维数据结构hash
等价于java中的hashMp或Python里的dict,在结构上使用二维结构,一维是数组,二维是链表,hash的内容key和value放在链表中,数组里存放的是链表的头指针。
通过key查找元素时,先计算key的hashcode,然后用hashcode对数组的长度进行取模定位到链表的表头,再对链表进行遍历获取到相应的value值。

4.set
等价于java中的hashSet。它的内部也是使用hash结构,所有的value都指向同一个内部值。

5.SortedSet/zset
等价于java中的Map<String,Double>,可以给每一个元素赋予一个权重score;
也类似于TreeSet,内部的元素会按照权重score进行排序,可以得到每个元素的名词,可以通过score的范围来获取元素的列表。
zset底层实现使用了两个数据结构,hash和跳跃列表。
hash的作用是关联元素value和权重score,保障元素value的唯一性,可以通过元素value找到相应的score值,
跳跃列表的目的是在于给元素value排序,根据score的范围获取元素列表。

6.Bitmaps
bitmaps不是一种真实的数据结构,而是String类型上一组面向bit操作的集合,由于strings是二进制安全的blod,并且他们的最大长度是512m,所以bitmaps能最大设置2^32个不同的bit.
使用场景:
    a.各种实时分析
        例如访问网站的用户的最长连续时间,每次用户访问网站时通过SETBIT命令设置bit为1,可以简单的用当前时间减去初始时间并除以3600*24当做这个bit的位置。
    b.存储于对象id关联的节省空间并且高性能的布尔信息

7.HyperLogLogs 简称 HLL
用于计算唯一失误的概率结构数据(被称为估计集合的基数)。如果统计唯一项,项目越多需要的内存就越多,因为需要记住过去已经看到的项,从而避免多次统计这些项。
在redis中HLL是一个不同的数据结构,被编码成Redis字符串,因此可以调用Get命令序列化一个HLL,也可以通过调用SET命令将其反序列化到redis服务器。
HLL的使用场景:
    a.计算用户每天在搜索框中执行的唯一查询,即搜索页面的UV统计,而Bitmaps则用于判断某个用户是否访问过搜索页面。这是它们用法的不同。

8.GEO
这个功能可以将用户给定的地理位置(经度和纬度)信息存储起来,并对这些信息进行操作。

Redis的五种基础数据结构和三种高级数据结构相关推荐

  1. Redis 五种数据结构以及三种高级数据结构解析以及使用

    一.前言 在 Redis 最重要最基础就属 它丰富的数据结构了,Redis 之所以能脱颖而出很大原因是他数据结构丰富,可以支持多种场景.并且 Redis 的数据结构实现以及应用场景在面试中是相当常见的 ...

  2. 硬核资源!Redis 五种数据结构以及三种高级数据结构解析(详解)

    上一篇分享的是<深入理解JVM>,这篇给大家分享<Redis 五种数据结构以及三种高级数据结构解析>. 前言 在 Redis 最重要最基础就属 它丰富的数据结构了,Redis ...

  3. 五、创建Bean的三种方式

    五.创建Bean的三种方式 转载于:https://www.cnblogs.com/ljiwej/p/7280614.html

  4. Spring的4种事务管理(1种编程式事务+三种声明事务)

    2019独角兽企业重金招聘Python工程师标准>>> Spring的4种事务管理(1种编程式事务+三种声明事务) 一.Spring事务的介绍 二.编程式事务xml的配置 注入后直接 ...

  5. 安川伺服总线通讯方式_plc通讯方式有哪三种?plc常见的三种通讯方式

    原标题:plc通讯方式有哪三种?plc常见的三种通讯方式 PLC = Programmable Logic Controller,可编程逻辑控制器,一种数字运算操作的电子系统,专为在工业环境应用而设计 ...

  6. golang: 密码中允许出现数字、大写字母、小写字母、特殊字符,但至少包含其中2种且长度在8-16之间(四种符号任意满足三种即可)

    要求: 密码中允许出现数字.大写字母.小写字母.特殊字符(.@$!%*#_~?&^),但至少包含其中2种且长度在8-16之间(四种符号任意满足三种即可) package mainimport ...

  7. 鬼谷子:深交四种人,绝交三种人

    导读: 鬼谷子是中国历史上一位极具神秘色彩的人物,被誉为千古奇人,创建鬼谷门派,长于持身养性,精于心理揣摩,深明刚柔之势,通晓纵横捭阖之术,独具通天之智.鬼谷子身怀旷世绝学,智慧卓绝,精通百家学问,是 ...

  8. 鬼谷子:深交四种人,绝交三种人!

    和什么样的人在一起,就有什么样的人生. 朋友是我们选择的亲人. 日夜相处,耳濡目染,朋友的模样,就是自己的模样. 跟着蜜蜂能找到花蜜,跟着苍蝇只能找到水沟. 选择朋友,就是选择自己的命运. 不是所有人 ...

  9. ML之R:通过数据预处理利用LiR/XGBoost等(特征重要性/交叉训练曲线可视化/线性和非线性算法对比/三种模型调参/三种模型融合)实现二手汽车产品交易价格回归预测之详细攻略

    ML之R:通过数据预处理利用LiR/XGBoost等(特征重要性/交叉训练曲线可视化/线性和非线性算法对比/三种模型调参/三种模型融合)实现二手汽车产品交易价格回归预测之详细攻略 目录 三.模型训练 ...

  10. 广播泛洪_一分钟了解交换机四种报文中的三种:广播、组播、未知单播

    随着互联网的发展,各种应用层出不穷,日新月异,对网络设备的要求也越来越高,对广大设备厂商也提出更多的要求.不过这些事情都与二层交换机没有关系:) ,因为各种应用的数据到达二层交换机时,都只会变成一个一 ...

最新文章

  1. How to use filter in Analytics Path Framework
  2. 计算机组装与维护配置清单作业,计算机组装与维护 作业汇.doc
  3. win10证书服务器不可用,win10系统提示“安全证书的吊销信息不可用”的修复方法...
  4. 腾讯视频下载安装链接_腾讯视频怎么上传视频
  5. 5.性能测试工具比较:Jmeter和LR
  6. 泛型list集合类转换成DataTable、datatable转list
  7. pycharm的安装及破解
  8. 图像处理基础(2):自适应中值滤波器(基于OpenCV实现)
  9. WPS快捷键之 通用基础
  10. 零基础Bootstrap入门教程(19)--下拉菜单、按钮式下拉菜单
  11. 中控消费机一直显示连接服务器,中控消费机培训及常见问题的解决办法课件.ppt...
  12. python使用matplotlib可视化柱状图(bar plot)、自定义柱状图的填充色、柱状图柱体的边缘色、配置字体使用中文轴标签
  13. 牛客练习赛50 F.tokitsukaze and Another Protoss and Zerg(分治+NTT)(模板题)
  14. Jsp实现注册登录以及忘记找回密码等操作(上)
  15. 成为CTO的关键技能是什么?
  16. [英语语法]句法之定语从句
  17. unity创建 《找不同》游戏 图片编辑器
  18. 南卡蓝牙耳机和JBL蓝牙耳机哪个更值得买?音质最好的蓝牙耳机测评
  19. qlv格式的视频如何转为mp4格式(爬虫小技巧)
  20. 云计算课程 DAY 1

热门文章

  1. 生信技能04 - 生信分析所需致病SNP位点Excel文件制作教程
  2. 接入层、汇聚层、核心层交换机三者之间的功能详解
  3. MySQL数据清理有技巧,这么破
  4. 元胞自动机模拟森林火灾--matlab实现
  5. 基于PANDA做DTI分析
  6. 双硬盘SSD+HDD安装双系统win10+Ubuntu16.04
  7. python AMQP 客户端连接
  8. 计算属性(react)
  9. apachecn归档下载
  10. 荣耀8_解锁_刷入第三方Recovery_root_刷入面具_刷机教程