Redis 常见数据结构以及使用场景分析

一,String

  1. 介绍: String数据结构是最简单的key-value类型。
  2. 常用命令: set,get,strlen,exists,decr,incr,setex等。
  3. 应用场景:一般常用在需要计数的场景,比如用户的访问次数,热点文章的点赞转发数量等等。

二,List

  1. 介绍: 一个双端链表的结构,容量是2的32次方减1个元素,大概40多亿。
  2. 常用命令: rpush,lpop,lpush,rpop,lrange,llen等。
  3. 应用场景: 一般用在栈、队列、消息队列等场景。(①微信公众号订阅的消息,②商品评论列表)

三,Hash

  1. 介绍: hash类似于JDK1.8前的HashMap,内部实现也差不多(数组+链表)。不过,Redis的hash做了更多优化。另外,hash 是一个 String 类型的 field 和 value 的映射表,特别适合用于存储对象,后续操作的时候,你可以直接仅仅修改这个对象中的某个字段的值。 比如我们可以 用hash 数据结构来存储用户信息,商品信息等等。
  2. 常用命令hset,hmset,hexists,hget,hgetall,hkeys,hvals等。
  3. 应用场景: 系统中对象数据的存储。(京东早期购物车)

四,Set

  1. 介绍: set类似于Java中的HashSet。Redis中的set类型是一种无序集合,集合中ji的元素没有先后顺序。
  2. 常用命令: sadd,sdiff ,sinter,spop,smembers,sismember,scard,sinterstore,sunion等。
  3. 应用场景: 需要存放的数据不能重复以及需要获取多个数据源交集和并集等场景。(微信抽奖小程序,微信朋友圈点赞,QQ内推可能认识的人)

五,Sorted Set

  1. 介绍: 和set相比,sorted set增加了一个权重参数score,使得集合中的元素能够按照score进行有序排列,还可以通过score的范围来获取元素的列表。有点像是Java中HashMap和TreeSet的结合体。
  2. 常用命令: zadd,zcard,zscore,zrange,zrevrange,zrem 等。
  3. 应用场景: 需要对数据根据某个权重进行排序的场景。比如在直播系统中,实时排行信息包含直播间在线用户列表,各种礼物排行榜,弹幕信息(可以理解为按消息维度的信息排行榜)等信息。

六,BitMap

  1. 介绍: bitmap存储的是连续的二进制数字(0和1),通过bitmap,只需要一个bit为来表示某个元素对应的值或者状态,key就是对应元素本身。8个bit可以组成一个byte,所以bitmap本身会极大的节省储存空间。
  2. 常用命令: setbit,getbit,bitcount,bitop
  3. 应用场景: 适用需要保存状态信息(比如是否签到,是否登录…)并需要进一步对这些信息进行分析的场景。比如用户签到情况,活跃用户情况,用户行为统计(比如是否点赞过某个视频)。

七,HyperLogLog

  1. 介绍: hyperloglog是用来做基数统计的算法 。hyperloglog的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定的,并且是很小的。在Redis里面,每个hyperloglog键只需要话费12KB内存,就可以计算接近2^64个不同元素的基数。
  2. 常用命令:
    在这里插入图片描述
  3. 应用场景: ①统计某个网站、某个文字的UV,②用户搜索网站关键词的数量,③统计用户每天搜索不同词条个数。

扩展:

  • UV:独立访客,一般理解为客户端IP,需要去重考虑。
  • PV:页面浏览量,不用去重。
  • DAU:日活跃用户量,登录或使用了某个产品的用户数(去重复登录的用户数)。
  • MAU:月活跃量。

八,GEO

  1. 介绍:主要用于存储地理位置信息,并对存储的信息进行操作。
  2. 常用命令:
    在这里插入图片描述
  3. 应用场景:美团地图位置附近的酒店推送。
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值