Redis常用的数据结构和使用场景
admin
2024-05-09 21:57:46
0

redis有5种常用的数据结构:

String:字符串

list:有序可重复集合

hash:字典

set:无序不可重复集合

sortedSet:有序不可重复集合

一.String(字符串)

redis中的String是可以修改的,也叫动态字符串(Simple Dynamic String,SDS)。String数据结构是键值对类型,其中值可以是数字或者字符串。

SDS机制

SDS是redis底层c维护的一个结构体

struct sds{T capacity; // 数组容量T len; // 实际长度byte flags; // 标志位,低三位表示类型byte[] contents; // 数组内容
}

对于SDS之所以叫动态扩容的能力,第一次分配时并不会分配多余的空间。字符串的分配机制:

每次扩容前会根据剩余容量判断内存是否够用,不够用则扩容。

当扩容后字符串的长度小于1MB时,每次扩容后分配自身长度;

当扩容后字符串的长度大于1MB时,每次扩容分配1MB的空间。

二.list(有序列表)

redis中的list是一种链表结构,list的插入和删除时间复杂度为O(1),插入和删除时不需要移动数据,只用改变节点的指针。

应用场景:

1.消息队列:lpop和rpush或者lpush和rpop实现队列功能。

2.排行榜:。

三.hash(字典)

redis中的hash和Java中的HashMap类似,都是数据+链表,但是redis中的hash发生hash碰撞时会将元素追加到链表上,在redis中hash的value只能是字符串。

应用场景:

1.存储对象:存储用户信息,商品信息等对象。

四.set(无序不可重复集合)

底层由一个字典实现,但是每个字典的value为空null,当集合最后一个元素被移除,数据结构自动被删除,内存被回收。

应用场景:

1.共同好友。

2.利用不可重复性,统计访问网站的所有ip。

五.sortedSet(有序可重复集合)

sortedSet给每个value赋予一个score,代表每个value的排序权重,底层实现由跳表维护。

应用场景:

1.排行榜。

2.排序:对学生成绩排序,value是学生的id,score是分数。

相关内容

热门资讯

打发时间一元一分红中麻将跑得快... 认准微——as099055或as022055——客服扣675434346免押%D%A
(盘点十款)1元1分正规麻将群... 正规广东红中癞子麻将,15张跑得快,一元一分群,24小时不熄火
哪里有熊猫一元一分广东麻将上下... +薇:mj08522或hz05832游戏类型:单挑,多人,亲友圈模式、秒上下,所有用户都是微信实名制...
“发慌!””清友会管清友“是陷... 网恋有风险,恋爱需谨慎!“他们”通过网页,社交软件,等形式发布有色广告,诱骗点击链接下载APP,随即...