Redis面试 - redis 都有哪些数据类型?
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 都有哪些数据类型?相关推荐
- Redis面试 - redis 的并发竞争问题是什么?
Redis面试 - redis 的并发竞争问题是什么? 面试题 redis 的并发竞争问题是什么?如何解决这个问题?了解 redis 事务的 CAS 方案吗? 面试官心理分析 这个也是线上非常常见的一 ...
- Redis面试 - redis 的雪崩和穿透?
Redis面试 - redis 的雪崩和穿透? 面试题 了解什么是 redis 的雪崩和穿透?redis 崩溃之后会怎么样?系统该如何应对这种情况?如何处理 redis 的穿透? 面试官心理分析 其实 ...
- Redis面试 - Redis的持久化机制
Redis面试 - Redis的持久化机制 面试题 redis 的持久化有哪几种方式?不同的持久化机制都有什么优缺点?持久化机制具体底层是如何实现的? 面试官心理分析 redis 如果仅仅只是将数据缓 ...
- Redis面试 - Redis 主从架构
Redis 主从架构 单机的 redis,能够承载的 QPS 大概就在上万到几万不等.对于缓存来说,一般都是用来支撑读高并发的.因此架构做成主从(master-slave)架构,一主多从,主负责写,并 ...
- redis 都有哪些数据类型?分别在哪些场景下使用比较合适?
redis 主要有以下几种数据类型: string hash list set Zset(sorted set) string 这是最简单的类型,就是普通的set和get,做简单的KV缓存. hash ...
- Redis面试之传统五大数据类型的落地应用详解
前提:安装redis6.0.8 Redis官网:https://redis.io/ Redis中文网:http://www.redis.cn/ redis基本类型: string list set z ...
- 一不小心肝出了4W字的Redis面试教程
本文脑图 redis基本数据结构 本文脑图 前言 Redis是基于c语言编写的开源非关系型内存数据库,可以用作数据库.缓存.消息中间件,这么优秀的东西客定要一点一点的吃透它. 这是关于Redis五种数 ...
- 3w字深度好文|Redis面试全攻略,读完这个就可以和面试官大战几个回合了
0x00.前言 众所周知数据结构和算法是面试重点,我们持续发力是十分明智的,要不然最后肯定是要吃亏的,少打打游戏刷刷微博可以改变我们的生活水平哦. 不过本文不是要讲述数据结构和算法的,而是另外一个面试 ...
- 【决战西二旗】|Redis面试热点之底层实现篇
来自:后端技术指南针 0.前言 最近一周没有技术文章产出,主要是Q4马上结束各种业务都在冲量,笔者一直都在疯狂工作甚至还有些焦虑到偶尔失眠,由于没有成块的时间研究新东西,所以就把之前看过的东西抽时间总 ...
最新文章
- 青少年编程竞赛交流群周报(第035周)
- 嵌入式开发都需要会些什么
- 你那么追捧的springboot,到底替你做了什么?
- 030_SpringBoot全局属性配置文件
- 阿里云 AI 编辑部获 CCBN 创新奖,揭秘传媒行业解决方案背后的黑科技
- 第十二章 多元线性回归
- intellij idea搭建springboot
- 第三篇:POSIX标准中的 “ 限制 ”
- 属马的人2021年害太岁运势预测
- 计算机专业教研成绩,2018学年第一学期计算机组教研组工作计划
- 2021年2月移动互联网全行业排行榜
- 施工日志管理软件app_庄典iPad建筑装修报表管理系统施工报表制作流程
- 让Ubuntu 10.04完美支持Thinkpad小红点Trackpoint
- 电影TS/TC/SCR/R5/BD/HD/HC版本意思收集(转)
- 高校计算机实验员岗位职责,计算机学院实验与实训中心主任岗位职责(参考Word)...
- 【多线程】解决SpringBoot热部署时layering-cache线程池被Tomcat Graceful shutdown,重新赋值方法区中 StatsServi
- 记一次瞬时网络挂起和XMLHttpRequest: 网络错误 0x2eff
- linux启动tomcat权限不足
- eDairy-我的白日梦
- C++实现RSA加密解密
热门文章
- 9:04 2009-7-28
- jQuery Zoom 图片聚焦或者点击放大A plugin to enlarge images on touch, click, or mouseover
- Magento教程 5:系统安装与备份
- 使用 jQuery Mobile 与 HTML5 开发 Web App (十七) —— HTML5 离线缓存
- 使用 HTML5 canvas 进行 Web 绘图
- 逐帧动画与夸张表情动画
- Unix——系统调用和库函数调用概念区别和联系
- Linux——批量查找替换方法(VIM和sed)
- Linux——好用的一些命令(一)(保持更新)
- qdir安装 多窗口资源管理软件