Redis 都有哪些数据类型?分别在哪些场景下使用比较合适?

目录

一、面试官心理分析

二、面试题剖析

1.数据类型

2.使用场景

(1)Strings

(2)Hashes

(3)Lists

(4)Sets

(5)Sorted Sets


一、面试官心理分析

        除非是面试官感觉看你简历,是工作3年以内的比较初级的同学,可能对技术没有很深入的研究,面试官才会问这类问题。否则,在宝贵的面试时间里,面试官实在不想多问。
        其实问这个问题,主要有两个原因:

        ·看看你到底有没有全面的了解 Redis 有哪些功能,一般怎么来用,啥场景用什么,就怕你别就会最简单的 KV 操作;
        ·看看你在实际项目里都怎么玩儿过 Redis。
        要是你回答的不好,没说出几种数据类型,也没说什么场景,你完了,面试官对你印象肯定不好,觉得你平时就是做个简单的 set 和 get。

二、面试题剖析

1.数据类型

        Redis 主要有以下几种数据类型:Strings,Hashes,Lists,Sets,Sorted Sets。

        Redis 除了这5种数据类型之外,还有 Bitmaps、HyperLogLogs、Streams 等。

2.使用场景

(1)Strings

        这是最简单的类型,就是普通的 set get ,做简单的 KV 缓存。如: set college szu

(2)Hashes

        这个是类似 map 的一种结构,这个一般就是可以将结构化的数据,比如一个对象(前提是这个对象没嵌套其他的对象)给缓存在 Redis 里,然后每次读写缓存的时候,可以就操作 hash里的某个字段。

(3)Lists

        Lists 是有序列表,这个可以玩儿出很多花样。
        比如可以通过 list 存储一些列表型的数据结构,类似粉丝列表、文章的评论列表之类的东西。
        比如可以通过 lrange 命令,读取某个闭区间内的元素,可以基于 list 实现分页查询,这个是很棒的一个功能,基于 Redis 实现简单的高性能分页,可以做类似微博那种下拉不断分页的东西,性能高,就一页一页走。
        0开始位置,-1结束位置,结束位置为-1时,表示列表的最后一个位置,即查看所有。
        lrange mylist 

比如可以搞个简单的消息队列,从 list 头怼进去,从 list 尾巴那里弄出来。

(4)Sets

        Sets 是无序集合,自动去重。
        直接基于 set 将系统里需要去重的数据扔进去,自动就给去重了,如果你需要对一些数据进行快速的全局去重,你当然也可以基于 ivm 内存里的 HashSet 进行去重,但是如果你的某个系统部署在多台机器上呢?得基于 Redis 进行全局的 set 去重。
        可以基于 set 玩儿交集、并集、差集的操作,比如交集吧,可以把两个人的粉丝列表整一个交集,看看俩人的共同好友是谁?对吧。
        把两个大V的粉丝都放在两个 set 中,对两个 set 做交集。
#-------操作一个set--
# 添加元素
sadd mySet 1

#查看全部元素
smembers mySet

#判断是否包含某个值
sismember mySet 3

#删除某个/些元素
srem mySet 1
srem mySet24

#查看元素个数
scard mySet

#随机删除一个元素
spop mySet

#-------操作多个set--

#将一个set的元素移动到另外一个
setsmove yourSet mySet 2

#求两set的交集
sinter yourSet mySet

# 求两set的并集
sunion yourSet mySet

# 求在yourSet中而不在mySet中的元素
sdiff yourSet mySet

(5)Sorted Sets

        Sorted Sets 是排序的 set ,去重但可以排序,写进去的时候给一个分数,自动根据分数排序。
zadd board 85 zhangsan
zadd board 72 lisi
zadd board 96 wangwu
zadd board 63 zhaoliu

# 获取排名前三的用户(默认是升序,所以需要rev 改为降序)
zrevrange board 3

#获取某用户的排名
zrank board zhaoliu

(ps:一个点赞一份爱,点歌关注不迷路!)

  • 65
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值