栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

redis数据类型

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

redis数据类型

1.五大基本数据类型 1.String:

最简单的类型,采用key-value的形式,一个String只能存储一组信息。value允许的最大存储容量为512MB。

String类型是二进制安全的。意味着Redis的string可以包含任何数据。比如jpg图片或者序列化的对象。

数据结构:

String的实现结构类似于Java的ArrayList数组:会先分配一个默认存储容量。每次扩容时都是在当前存储容量的基础上翻倍。与ArrayList的扩容不同的是,当字符串小于1MB时,每次扩容会加倍。大于1MB时,每次扩容只会增加1MB,达到其最大容量512MB时,不会再进行扩容。

2.list

类似于Java等语言的linkedList 特点是单键多值,按照插入顺序排序(头插,尾插)。

其底层是是一个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差。

数据结构:

List的数据结构为每个节点都为zipList的quickList的双向链表,每个zipList是一段连续的存贮空间,可以把它看成一个数组,zipList实际上还包含了所占字节数,元素个数,偏移量等信息。深入了解请看Redis内部数据结构详解(4)——ziplist - 铁蕾的个人博客 (zhangtielei.com)

3.set

与list类似的单键多值,不同点是无序存储与不可重复存储。它的底层是一个value值均为0的一个hash表所以添加,删除,查找的复杂度都是O(1)。

数据结构:

Set数据结构是dict字典,字典是用哈希表实现的。

Java中HashSet的内部实现使用的是HashMap,只不过所有的value都指向同一个对象。Redis的set结构也是一样,它的内部也使用hash结构,所有的value都指向同一个内部值。

4.hash

类似于java中的Map再嵌套一层Map(Map>),redis中hash的key对应最外层map的key,filed对应内层Map的key,value对应内层Map的value。

数据结构:

Hash类型对应的数据结构是两种:ziplist(压缩列表),hashtable(哈希表)。当field-value长度较短且个数较少时,使用ziplist,否则使用hashtable。

5.Zset

有序的set,与普通set不同的是:Zset的每个key对应的多个元素都需要指定一个叫做score的权值。这样就可以获取一个范围内的set元素

SortedSet(zset)是Redis提供的一个非常特别的数据结构,一方面它等价于Java的数据结构Map,可以给每一个元素value赋予一个权重score,另一方面它又类似于TreeSet,内部的元素会按照权重score进行排序,可以得到每个元素的名次,还可以通过score的范围来获取元素的列表。

zset底层使用了两个数据结构

(1)hash,hash的作用就是关联元素value和权重score,保障元素value的唯一性,可以通过元素value找到相应的score值。

(2)跳跃表,跳跃表的目的在于给元素value排序,根据score的范围获取元素列表。

2.新的数据类型 1.BitMaps

Bitmaps实际上也是一种key-value,与普通key-value不同的是,Bitmaps的value只能是0或1,Bitmaps的key代表偏移量是“数位”的位置。

例:

每个独立用户是否访问过网站存放在Bitmaps中, 将访问的用户记做1, 没有访问的用户记做0, 用偏移量作为用户的id。

设置键的第offset个位的值(从0算起) , 假设现在有20个用户,userid=1, 6, 11, 15, 19的用户对网站进行了访问, 那么当前Bitmaps初始化结果如图

2.hyperloglog

与set类似,只能存放不重复的元素。不同的是:hyperloglog只用来记录存入的元素的数量,不记录存入元素的具体值。

3.Geospatial

用来存放坐标的类型,提供了经纬度设置,查询,范围查询,距离查询,经纬度Hash等常见操

作。

3.碎碎念

首先是感觉redis的命名真的好随便,再是体会到了数据结构的强大之处。

今天先来记录一下每个类型的概念和大概用法,以后有能力了再去研究底层实现把

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/678162.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号