Redis面试 - redis 都有哪些数据类型?

面试题

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

面试官心理分析

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

其实问这个问题,主要有两个原因:

  • 看看你到底有没有全面的了解 redis 有哪些功能,一般怎么来用,啥场景用什么,就怕你别就会最简单的 KV 操作;
  • 看看你在实际项目里都怎么玩儿过 redis。

要是你回答的不好,没说出几种数据类型,也没说什么场景,你完了,面试官对你印象肯定不好,觉得你平时就是做个简单的 set 和 get。

面试题剖析

redis 主要有以下几种数据类型:

  • string
  • hash
  • list
  • set
  • sorted set

string

这是最简单的类型,就是普通的 set 和 get,做简单的 KV 缓存。

set college szu

hash

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

hset person name bingo
hset person age 20
hset person id 1
hget person name
person = {"name": "bingo","age": 20,"id": 1
}

list

list 是有序列表,这个可以玩儿出很多花样。

比如可以通过 list 存储一些列表型的数据结构,类似粉丝列表、文章的评论列表之类的东西。

比如可以通过 lrange 命令,读取某个闭区间内的元素,可以基于 list 实现分页查询,这个是很棒的一个功能,基于 redis 实现简单的高性能分页,可以做类似微博那种下拉不断分页的东西,性能高,就一页一页走。

# 0开始位置,-1结束位置,结束位置为-1时,表示列表的最后一个位置,即查看所有。
lrange mylist 0 -1

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

lpush mylist 1
lpush mylist 2
lpush mylist 3 4 5# 1
rpop mylist

set

set 是无序集合,自动去重。

直接基于 set 将系统里需要去重的数据扔进去,自动就给去重了,如果你需要对一些数据进行快速的全局去重,你当然也可以基于 jvm 内存里的 HashSet 进行去重,但是如果你的某个系统部署在多台机器上呢?得基于 redis 进行全局的 set 去重。

可以基于 set 玩儿交集、并集、差集的操作,比如交集吧,可以把两个人的粉丝列表整一个交集,看看俩人的共同好友是谁?对吧。

把两个大 V 的粉丝都放在两个 set 中,对两个 set 做交集。

#-------操作一个set-------
# 添加元素
sadd mySet 1# 查看全部元素
smembers mySet# 判断是否包含某个值
sismember mySet 3# 删除某个/些元素
srem mySet 1
srem mySet 2 4# 查看元素个数
scard mySet# 随机删除一个元素
spop mySet#-------操作多个set-------
# 将一个set的元素移动到另外一个set
smove yourSet mySet 2# 求两set的交集
sinter yourSet mySet# 求两set的并集
sunion yourSet mySet# 求在yourSet中而不在mySet中的元素
sdiff yourSet mySet

sorted set

sorted set 是排序的 set,去重但可以排序,写进去的时候给一个分数,自动根据分数排序。

zadd board 85 zhangsan
zadd board 72 lisi
zadd board 96 wangwu
zadd board 63 zhaoliu# 获取排名前三的用户(默认是升序,所以需要 rev 改为降序)
zrevrange board 0 3# 获取某用户的排名
zrank board zhaoliu

Redis面试 - redis 都有哪些数据类型?相关推荐

  1. Redis面试 - redis 的并发竞争问题是什么?

    Redis面试 - redis 的并发竞争问题是什么? 面试题 redis 的并发竞争问题是什么?如何解决这个问题?了解 redis 事务的 CAS 方案吗? 面试官心理分析 这个也是线上非常常见的一 ...

  2. Redis面试 - redis 的雪崩和穿透?

    Redis面试 - redis 的雪崩和穿透? 面试题 了解什么是 redis 的雪崩和穿透?redis 崩溃之后会怎么样?系统该如何应对这种情况?如何处理 redis 的穿透? 面试官心理分析 其实 ...

  3. Redis面试 - Redis的持久化机制

    Redis面试 - Redis的持久化机制 面试题 redis 的持久化有哪几种方式?不同的持久化机制都有什么优缺点?持久化机制具体底层是如何实现的? 面试官心理分析 redis 如果仅仅只是将数据缓 ...

  4. Redis面试 - Redis 主从架构

    Redis 主从架构 单机的 redis,能够承载的 QPS 大概就在上万到几万不等.对于缓存来说,一般都是用来支撑读高并发的.因此架构做成主从(master-slave)架构,一主多从,主负责写,并 ...

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

    redis 主要有以下几种数据类型: string hash list set Zset(sorted set) string 这是最简单的类型,就是普通的set和get,做简单的KV缓存. hash ...

  6. Redis面试之传统五大数据类型的落地应用详解

    前提:安装redis6.0.8 Redis官网:https://redis.io/ Redis中文网:http://www.redis.cn/ redis基本类型: string list set z ...

  7. 一不小心肝出了4W字的Redis面试教程

    本文脑图 redis基本数据结构 本文脑图 前言 Redis是基于c语言编写的开源非关系型内存数据库,可以用作数据库.缓存.消息中间件,这么优秀的东西客定要一点一点的吃透它. 这是关于Redis五种数 ...

  8. 3w字深度好文|Redis面试全攻略,读完这个就可以和面试官大战几个回合了

    0x00.前言 众所周知数据结构和算法是面试重点,我们持续发力是十分明智的,要不然最后肯定是要吃亏的,少打打游戏刷刷微博可以改变我们的生活水平哦. 不过本文不是要讲述数据结构和算法的,而是另外一个面试 ...

  9. 【决战西二旗】|Redis面试热点之底层实现篇

    来自:后端技术指南针 0.前言 最近一周没有技术文章产出,主要是Q4马上结束各种业务都在冲量,笔者一直都在疯狂工作甚至还有些焦虑到偶尔失眠,由于没有成块的时间研究新东西,所以就把之前看过的东西抽时间总 ...

最新文章

  1. 青少年编程竞赛交流群周报(第035周)
  2. 嵌入式开发都需要会些什么
  3. 你那么追捧的springboot,到底替你做了什么?
  4. 030_SpringBoot全局属性配置文件
  5. 阿里云 AI 编辑部获 CCBN 创新奖,揭秘传媒行业解决方案背后的黑科技
  6. 第十二章 多元线性回归
  7. intellij idea搭建springboot
  8. 第三篇:POSIX标准中的 “ 限制 ”
  9. 属马的人2021年害太岁运势预测
  10. 计算机专业教研成绩,2018学年第一学期计算机组教研组工作计划
  11. 2021年2月移动互联网全行业排行榜
  12. 施工日志管理软件app_庄典iPad建筑装修报表管理系统施工报表制作流程
  13. 让Ubuntu 10.04完美支持Thinkpad小红点Trackpoint
  14. 电影TS/TC/SCR/R5/BD/HD/HC版本意思收集(转)
  15. 高校计算机实验员岗位职责,计算机学院实验与实训中心主任岗位职责(参考Word)...
  16. 【多线程】解决SpringBoot热部署时layering-cache线程池被Tomcat Graceful shutdown,重新赋值方法区中 StatsServi
  17. 记一次瞬时网络挂起和XMLHttpRequest: 网络错误 0x2eff
  18. linux启动tomcat权限不足
  19. eDairy-我的白日梦
  20. C++实现RSA加密解密

热门文章

  1. 9:04 2009-7-28
  2. jQuery Zoom 图片聚焦或者点击放大A plugin to enlarge images on touch, click, or mouseover
  3. Magento教程 5:系统安装与备份
  4. 使用 jQuery Mobile 与 HTML5 开发 Web App (十七) —— HTML5 离线缓存
  5. 使用 HTML5 canvas 进行 Web 绘图
  6. 逐帧动画与夸张表情动画
  7. Unix——系统调用和库函数调用概念区别和联系
  8. Linux——批量查找替换方法(VIM和sed)
  9. Linux——好用的一些命令(一)(保持更新)
  10. qdir安装 多窗口资源管理软件