Redis五问(一)常用数据结构

Redis常用数据结构有哪些?

5种基础数据结构:String, List, Set, Hash, Zset

三种特殊数据结构:HyperLogLogs(基数统计),Bitmap(位存储),Geospatial(地理位置)

5种基础数据结构底层依赖以下8种,简单动态字符串(SDS)、LinkedList(双向链表)、Hash Table(哈希表)、SkipList(跳跃表)、Intset(整数集合)、ZipList(压缩列表)、QuickList(快速列表)

String

List

Set

Hash

Zset

SDS

LinkedList/ZipList/QuickList

ZipList,Intset

Hash Table、ZipList

ZipList、SkipList

List

Redis实现的List实际是个双向链表,可以支持反向查找和遍历,方便操作但是增加了额外的内存开销。还可以通过RPUSH/LPOP或LPUSH/RPOP实现队列操作,可以用来做消息队列。

Hash

有点类似于JDK1.8之前的Hashmap,数组+ 链表;适合储存对象,比如商品价目表,用户信息。

Set

存放数据唯一等场景。比如点赞

Zset

需要存储的数据有优先级或者重要程度的场景 比如优先级任务队列。

  • 举例 :优先级任务队列。

  • 相关命令 :ZRANGE (从小到大排序) 、 ZREVRANGE (从大到小排序)、ZREVRANK (指定元素排名)。

Bitmap

储存连续二进制数字。

  • 举例 :用户签到情况、活跃用户情况、用户行为统计(比如是否点赞过某个视频)。

HyperLogLog

Redis的HyperLogLog指向需要12K的空间就可以存储2^64个不同元素。

  • 稀疏矩阵 :计数较少的时候,占用空间很小。

  • 稠密矩阵 :计数达到某个阈值的时候,占用 12k 的空间。

应用场景

数量量巨大(百万、千万级别以上)的计数场景

  • 举例 :热门网站每日/每周/每月访问 ip 数统计、热门帖子 uv 统计、

Geospatial index

基于Sorted Set实现

适合实现:附近的人

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值