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

Redis之基础数据结构

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

Redis之基础数据结构

Redis中所有数据结构都是以唯一key字符串作为名称,然后通过这个唯一key获取相应的value,不同的数据结构类型就是指的value的类型。本文只简单介绍基础数据结构,对应数据结构的深入解析会在后面文章中叙述。

String

字符串是一种十分常见的redis数据存储结构,通常可以将数据序列化成json存储在redis中,使用时伴随着一次反序列化的过程。

Redis中的字符串是动态字符串,是可以修改的,有点类似于Java中的ArrayList,采用预分配冗余空间的方式进行存储,所获取的空间要大于实际使用的内存空间,当字符串大小小于1M的时候都是加倍现有空间,当大于1M的时候每次增加1M,同时字符串最大的容量为512M。

List

Redis中的List相当于Java中的linkedList,它是链表的数据结构,这也就导致它的新增和删除操作非常快,但是查询效率非常低,当列表的最后一个元素弹出后,列表自动删除,内存被回收。

Redis的List通常被用作异步队列来使用, 将任务结构体序列化成字符串放入Llist中,然后另一个线程读取处理。内部实现其实是比较复杂的,是被称之为quickList的结构来完成的。

Hash

Redis中的字典相当于Java中的HashMap,是无序字典,由数组+链表实现的,碰撞的元素有链表连接起来。不同的是Redis字典的value值只能是字符串,此外他们的rehash的方式是不同的。JDK1.7采用的是全rehash,JDK1.8采用的是部分rehash,通过高位与运算来计算是否需要移动。而Redis中采用的是渐进式的rehash策略。

它是在rehash的时候保留了新旧两种hash结构,查询时会查询到两种结构,然后在后续的定时任务和hash子指令中,循序渐进的将旧hash迁移到新hash中,当hash最后一个元素迁移完成的时候,原结构删除。

Set

Redis中的Set是一个无序集合,相当有Java中的HashSet,内部实现相当于一个特殊的字典,value都是null,当集合的最后一个元素移除的时候,原结构删除,内存被回收。

zset

zset是Redis中最为有特色的数据结构了,它类似于Java中SortedSet和HashMap的结合体,一方面保证了内部key值得唯一性,同时可以给每一个key赋予一个score值,作为排序的依据,内部实现基于跳跃列表的数据结构。

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

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

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