Redis数据类型-Set-原理

特性

Set是无序且不可重复

一个集合最多可以存储 2 ^ 32 - 1 个元素

使用场景:

  • 标签

    • 共同好友

    • 兴趣&爱好

    • 网页uv(独立访客数)统计

  • 统计每天的新增用户数

    • key以user:id 以及当天日期,例如 user:uid:20220905; value为Set集合,记录当天登录的用户ID

  • 排行

    • 热点话题

    • 点赞排行

    • ...

  • 黑白名单

存储结构

inset

使用场景

当集合对象同时满足以下两个条件时,对象使用inset编码:

  • 集合对象保存的所有元素都是整数值

  • 集合对象保存的元素数量不超过512个(默认值,配置参数set-max-intset-entries可以修改)

原理分析1

intset的核心是一个字节数组,按照从小到大存放着set元素

  • encoding:每个元素的编码方式,编码方式指定了一个整数元素占用多少个contents数组位

    • int16_t 2个字节,16位的整数,范围相当于java 的 short 类型

    • int32_t 4个字节,32位的整数,范围相当于java 的 int 类型

    • int64_t 8个字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java&ly

感谢支持,请小编喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值