分布式缓存的面试题3
1、面试题
redis都有哪些数据类型?分别在哪些场景下使用比较合适?
2、面试官心里分析
除非是我感觉看你简历,就是工作3年以内的比较初级的一个同学,可能对技术没有很深入的研究过,我才会问这类问题,在宝贵的面试时间里,我实在是不想多问
其实问这个问题呢。。。主要就俩原因
第一,看看你到底有没有全面的了解redis有哪些功能,一般怎么来用,啥场景用什么,就怕你别就会最简单的kv操作
第二,看看你在实际项目里都怎么玩儿过redis
要是你回答的不好,没说出几种数据类型,也没说什么场景,你完了,面试官对你印象肯定不好,觉得你平时就是做个简单的set和get。
3、面试题剖析
(1)string
这是最基本的类型了,没啥可说的,就是普通的set和get,做简单的kv缓存
(2)hash
这个是类似map的一种结构,这个一般就是可以将结构化的数据,比如一个对象(前提是这个对象没嵌套其他的对象)给缓存在redis里,然后每次读写缓存的时候,可以就操作hash里的某个字段。
key=150
value={
“id”: 150,
“name”: “zhangsan”,
“age”: 20
}
hash类的数据结构,主要是用来存放一些对象,把一些简单的对象给缓存起来,后续操作的时候,你可以直接仅仅修改这个对象中的某个字段的值
value={
“id”: 150,
“name”: “zhangsan”,
“age”: 21
}
(3)list
有序列表,这个是可以玩儿出很多花样的
微博,某个大v的粉丝,就可以以list的格式放在redis里去缓存
key=某大v
value=[zhangsan, lisi, wangwu]
比如可以通过list存储一些列表型的数据结构,类似粉丝列表了、文章的评论列表了之类的东西
比如可以通过lrange命令,就是从某个元素开始读取多少个元素,可以基于list实现分页查询,这个很棒的一个功能,基于redis实现简单的高性能分页,可以做类似微博那种下拉不断分页的东西,性能高,就一页一页走
比如可以搞个简单的消息队列,从list头怼进去,从list尾巴那里弄出来
(4)set
无序集合,自动去重
直接基于set将系统里需要去重的数据扔进去,自动就给去重了,如果你需要对一些数据进行快速的全局去重,你当然也可以基于jvm内存里的HashSet进行去重,但是如果你的某个系统部署在多台机器上呢?
得基于redis进行全局的set去重
可以基于set玩儿交集、并集、差集的操作,比如交集吧,可以把两个人的粉丝列表整一个交集,看看俩人的共同好友是谁?对吧
把两个大v的粉丝都放在两个set中,对两个set做交集
(5)sorted set
排序的set,去重但是可以排序,写进去的时候给一个分数,自动根据分数排序,这个可以玩儿很多的花样,最大的特点是有个分数可以自定义排序规则
比如说你要是想根据时间对数据排序,那么可以写入进去的时候用某个时间作为分数,人家自动给你按照时间排序了
排行榜:将每个用户以及其对应的什么分数写入进去,zadd board score username,接着zrevrange board 0 99,就可以获取排名前100的用户;zrank board username,可以看到用户在排行榜里的排名
zadd board 85 zhangsan
zadd board 72 wangwu
zadd board 96 lisi
zadd board 62 zhaoliu
96 lisi
85 zhangsan
72 wangwu
62 zhaoliu
zrevrange board 0 3
获取排名前3的用户
96 lisi
85 zhangsan
72 wangwu
zrank board zhaoliu
转载于:https://www.cnblogs.com/daiwei1981/p/9411569.html
分布式缓存的面试题3相关推荐
- 分布式缓存Redis面试题
来源:https://github.com/shishan100/Java-Interview-Advanced 面试题 redis 和 memcached 有什么区别?redis 的线程模型是什么? ...
- 分布式缓存的面试题8
1.面试题 了解什么是redis的雪崩和穿透?redis崩溃之后会怎么样?系统该如何应对这种情况?如何处理redis的穿透? 2.面试官心里分析 其实这是问到缓存必问的,因为缓存雪崩和穿透,那是缓存最 ...
- 分布式缓存的面试题9
1.面试题 如何保证缓存与数据库的双写一致性? 2.面试官心里分析 你只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性问题? 3.面试题 ...
- 分布式缓存数据库面试题redis
redis和memcached什么区别?为什么高并发下有时单线程的redis比多线程的memcached效率要高? 区别: 1.mc可缓存图片和视频.rd支持除k/v更多的数据结构; 2.rd可以使用 ...
- 分布式缓存的面试题1
1.面试题 在项目中缓存是如何使用的?缓存如果使用不当会造成什么后果? 2.面试官心里分析 这个问题,互联网公司必问,要是一个人连缓存都不太清楚,那确实比较尴尬 只要问到缓存,上来第一个问题,肯定能是 ...
- Redis 分布式缓存 面试题重点(持续更新)
Redis 分布式缓存 面试题重点 总结 常用数据类型 String 类型面试分析 博客的字数统计如何实现?(strlen) 如何将审计日志不断追加到指定key? (append) 你如何实现一个分布 ...
- mybatis+redis实现分布式缓存+缓存面试题
一,mybatis缓存机制 mybatis提供了一级.二级缓存. 一级缓存:线程级别的缓存,也称为本地缓存或sqlSession级别的缓存,一级缓存是默认存在的,同一个会话中,查询两次相同的操作就会从 ...
- 让国内顶尖程序员低头的这份面试题之java缓存总结,从单机缓存到分布式缓存架构
1.缓存定义 高速数据存储层,提高程序性能 2.为什么要用缓存(读多写少,高并发) 1.提高读取吞吐量 2.提升应用程序性能 3.降低数据库成本 4.减少后端负载 5.消除数据库热点 6.可预测的性能 ...
- 分布式面试全家桶:分布式事务+分布式锁+分布式缓存+分布式面试题+分布式项目
一.分布式事务 1.分布式事务简介 2.Seata简介 3.Seata-Server安装 4.Seata配置Nacos注册中心和配置中心 5.Seata-AT模式 6.XA协议 7.Seata整体 ...
最新文章
- PHPExcel使用-使用PHPExcel导出文件-导出MySQL数据
- 推荐系统发展的六大影响因子 | 深度
- CMakeListx.txt 编辑语法学习
- 蓝桥杯_算法训练_动态数组使用
- ios之第一个程序Hello word, I am chenyu !
- 计算机硬件能够直接识别的语言是英语,计算机硬件能直接识别、执行的语言是()...
- 玩转SpringBoot 2 之项目启动篇
- 点对点借贷dApp Yield宣布流动性激励迁移至SushiSwap
- 局域网传文件_手机和电脑之间互传比较大的文件,哪种方式比较好?
- 超强的用linux命令勾搭美女
- Flutter ContrainedBox
- 制作课件的软件及特点作用
- PS 自定义画笔工具
- Java后端技术知识点汇总(思维导图)
- java网吧计费系统源码_网吧计费管理系统 - WEB源码|JSP源码/Java|源代码 - 源码中国...
- 华为云域名转入到阿里云的基本流程
- Django读取图片
- windows10 易升 下载失败 解决方法
- html制作古诗念奴娇,《念奴娇·赤壁怀古》的教学设计
- FileReader 对象实现图片预览
热门文章
- java 判断数的位数_Java判断数字位数的两种方法
- python 如何建立图形用户界面_python(五)图形用户界面easyGUI入门
- 计算机伦理问题案例分析,基于网络环境的案例教学在《计算机伦理学》中的实践研究...
- c语言一对圆括号不能,C语言单元习题集
- ylinux系统找到软件_电脑用了段时间发现多处一些软件该怎么办?
- linux查看CPU利用率与负载,Linux CPU负载利用率统计
- java内存栅栏_内存屏障(Memory Barriers/Fences) - 并发编程中最基础的一项技术
- linux mysql 1045 错误_Linux 下,mysql数据库报无法登陆错误:ERROR 1045 (28000): Access denied for use...
- java基本数据类型_Java面试题Java中有几种基本数据类型?它们分别占多大字节?...
- java未将对象引用设置_未将对象引用到实例怎么解决_常见问题解析,java