随笔 - 15  文章 - 0  评论 - 0  阅读 - 561

redis数据结构

redis 数据类型

	string  list  hash  set   zset   HyperLogLog   GEO  BloomFilter(布隆过滤器)

HyperLogLog

基本概念:
Redis 在 2.8.9 版本添加了 HyperLogLog 结构。
Redis HyperLogLog 是用来做基数统计的算法,所谓基数,也就是不重复的元素。
优点
在输入元素的数量或者体积非常大时,计算基数所需的空间总是固定的、并且是很小的。在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基数。
缺点
因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像集合那样,返回输入的各个元素。
估算的值,可能存在误差
应用场景:
网页统计UV (浏览用户数量,同一天同一个ip多次访问算一次访问,目的是计数,而不是保存用户)
传统的方式是使用set保存用户的id,可以统计set中元素数量作为标准判断。
但如果这种方式保存大量用户id,会占用大量内存,我们的目的是为了计数,而不是去保存id。

GEO

基本概念:
在 Redis 3.2 版本中新增了一种叫 geo 的数据结构,它主要用来存储地理位置信息,并对存储的信息进行操作。
应用场景:
用于存储地理信息以及对地理信息作操作的场景。
例如:

  • 查看附近的人
  • 微信位置共享
  • 地图上直线距离的展示

BloomFilter(布隆过滤器)

基本概念:
一种数据结构,是由一串很长的二进制向量组成,可以将其看成一个二进制数组。既然是二进制,那么里面存放的不是0,就是1,但是初始默认值都是0。
主要作用是:判断一个元素是否在某个集合中。比如说,我想判断20亿的号码中是否存在某个号码,如果直接插DB,那么数据量太大时间会很慢;如果将20亿数据放到缓存中,缓存也装不下。这个时候用布隆过滤器最合适.
布隆过滤器是用于判断一个元素是否在集合中。通过一个位数组和N个hash函数实现。
优点:

  • 空间效率高,所占空间小。
  • 查询时间短。
    缺点:
  • 元素添加到集合中后,不能被删除。
  • 有一定的误判率
    底层实现:
    Redis提供的Bitmaps这个“数据结构”可以实现对位的操作。Bitmaps本身不是一种数据结构,实际上就是字符串,但是它可以对字符串的位进行操作。
    可以把Bitmaps想象成一个以位为单位数组,数组中的每个单元只能存0或者1,数组的下标在bitmaps中叫做偏移量。单个bitmaps的最大长度是512MB,即2^32个比特位。
    BloomFilter(布隆过滤器)
    基本概念:
    一种数据结构,是由一串很长的二进制向量组成,可以将其看成一个二进制数组。既然是二进制,那么里面存放的不是0,就是1,但是初始默认值都是0。
    主要作用是:判断一个元素是否在某个集合中。比如说,我想判断20亿的号码中是否存在某个号码,如果直接插DB,那么数据量太大时间会很慢;如果将20亿数据放到缓存中,缓存也装不下。这个时候用布隆过滤器最合适.
    布隆过滤器是用于判断一个元素是否在集合中。通过一个位数组和N个hash函数实现。
    优点:
  • 空间效率高,所占空间小。
  • 查询时间短。
    缺点:
  • 元素添加到集合中后,不能被删除。
  • 有一定的误判率
    底层实现:
    Redis提供的Bitmaps这个“数据结构”可以实现对位的操作。Bitmaps本身不是一种数据结构,实际上就是字符串,但是它可以对字符串的位进行操作。
    可以把Bitmaps想象成一个以位为单位数组,数组中的每个单元只能存0或者1,数组的下标在bitmaps中叫做偏移量。单个bitmaps的最大长度是512MB,即2^32个比特位。
posted on   坐在云上飘  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示