redis面试:redis常用的数据类型有哪些

目前redis一共有八种数据结构:五种基本数据结构+三种特殊数据结构

五种基本数据结构

  • 字符串
    • 字符串类型是string最基础的数据类型,首先键是字符串类型,而且其他几种结构都是在字符串类型的基础上构建的。
    • String类型是二进制安全的,意味着可以包含任何数据,比如字符串:简单的字符串、XML、JSOB;数字:整数、浮点数;二进制:图片、音频、视频
    • 使用场景:缓存、计数器、共享session、限速
  • 哈希
    • 哈希是键值对的集合。在 Redis 中,哈希是字符串字段和字符串值之间的映射。因此,它们适合表示对象。
    • 每个哈希可以存储多达 2 32 – 1 2^{32}– 1 2321 个字段-值对。
  • 列表(list)
    • 列表类型是用来存储的多个有序的字符串,列表中的每个字符串成为元素,一个列表最大可以存储 2 32 – 1 2^{32}– 1 2321 个元素,在Redis中,可以在列表两端插入和弹出,还可以获取指定范围的元素列表、获取指定索引下的元素等
    • 列表是一种比较灵活的数据结构,它可以充当栈和队列的角色
    • 使用场景:栈、队列、阻塞队列、 关注列表、粉丝列表、 最新列表、抢购等
  • 集合(set)
    • 集合(set)是 Redis 数据库中的无序字符串集合,但和列表不同的是集合中不允许有重复的元素,并且集合中的元素是无序的,不能通过索引下标获取元素
    • redis除了支持集合内的增删查找,同时还支持多个集合取交集、并集、差集。在 Redis 中,添加,删除和查找的时间复杂度是 O(1)。
    • 使用场景:
      • 使用set类型去跟踪一些具有唯一性的数据
        • 比如:访问某一博客的唯一IP地址的信息,我们只需要在每次访问者访问该博客的时候,将访问者的IP存入redis当中,然后set类型会自动保证IP地址的唯一性
        • 比如:set查询用户名是否被注册、效率极高
        • 比如:投票系统中,如果在限制用户一天只能投票一次,可以将今天日期作为 set 的key,存取用户额投票行为,从而保证投票唯一。
      • 用于维护数据之间的关联关系
        • 比如:一个用户对娱乐、体育感兴趣,另一个可能对新闻比较感兴趣,这些兴趣就是标签,有了这些数据就可以得到同一标签的人,以及用户的共同爱好的标签,这些数据对于用户体验以及增强用户粘度比较重要
        • 比如:所有购买某一个电子设备的ID被存储到一个指定的set当中,而购买另外一个电子产品的客户的ID被存储到另外的一个set当中,而如果此时我们想获取由哪些客户同事购买了这两种产品,那么就可以使用它的一个“交集”的操作来完成。
  • 有序集合(zset)
    • 有序集合和集合有着必然的联系,它保留了集合不能有重复成员的特性,但不同的是,有序集合中的元素是可以排序的,但是它和列表的使用索引下标作为排序不同的是:它给每个元素设置一个分数,作为排序的依据
    • 使用场景:排行榜,比如视频网站需要对用户上传的文件做排行榜,榜单维护可能是多方面:按照时间、按照播放量、按照获得的赞数等。

三种特殊类型

  • geo:可以推算出地理位置信息,两地之间的距离
  • hyperloglog:基数排序,常用于统计网站的UV
  • bitmap位图:bitmap就是通过最小的单位bit来进行0或者1的设置,表示某个元素对应的值会在状态。一个bit的值,要么是0,要么是1,也就是说一个bit能存储的最多信息是2。bitmap常用于统计用户信息比如活跃粉丝和不活跃粉丝,登录和未登录,是否打卡等
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值