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相关推荐

  1. 分布式缓存Redis面试题

    来源:https://github.com/shishan100/Java-Interview-Advanced 面试题 redis 和 memcached 有什么区别?redis 的线程模型是什么? ...

  2. 分布式缓存的面试题8

    1.面试题 了解什么是redis的雪崩和穿透?redis崩溃之后会怎么样?系统该如何应对这种情况?如何处理redis的穿透? 2.面试官心里分析 其实这是问到缓存必问的,因为缓存雪崩和穿透,那是缓存最 ...

  3. 分布式缓存的面试题9

    1.面试题 如何保证缓存与数据库的双写一致性? 2.面试官心里分析 你只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性问题? 3.面试题 ...

  4. 分布式缓存数据库面试题redis

    redis和memcached什么区别?为什么高并发下有时单线程的redis比多线程的memcached效率要高? 区别: 1.mc可缓存图片和视频.rd支持除k/v更多的数据结构; 2.rd可以使用 ...

  5. 分布式缓存的面试题1

    1.面试题 在项目中缓存是如何使用的?缓存如果使用不当会造成什么后果? 2.面试官心里分析 这个问题,互联网公司必问,要是一个人连缓存都不太清楚,那确实比较尴尬 只要问到缓存,上来第一个问题,肯定能是 ...

  6. Redis 分布式缓存 面试题重点(持续更新)

    Redis 分布式缓存 面试题重点 总结 常用数据类型 String 类型面试分析 博客的字数统计如何实现?(strlen) 如何将审计日志不断追加到指定key? (append) 你如何实现一个分布 ...

  7. mybatis+redis实现分布式缓存+缓存面试题

    一,mybatis缓存机制 mybatis提供了一级.二级缓存. 一级缓存:线程级别的缓存,也称为本地缓存或sqlSession级别的缓存,一级缓存是默认存在的,同一个会话中,查询两次相同的操作就会从 ...

  8. 让国内顶尖程序员低头的这份面试题之java缓存总结,从单机缓存到分布式缓存架构

    1.缓存定义 高速数据存储层,提高程序性能 2.为什么要用缓存(读多写少,高并发) 1.提高读取吞吐量 2.提升应用程序性能 3.降低数据库成本 4.减少后端负载 5.消除数据库热点 6.可预测的性能 ...

  9. 分布式面试全家桶:分布式事务+分布式锁+分布式缓存+分布式面试题+分布式项目

    一.分布式事务 1.分布式事务简介 2.Seata简介 3.Seata-Server安装 4.Seata配置Nacos注册中心和配置中心 5.Seata-AT模式   6.XA协议 7.Seata整体 ...

最新文章

  1. PHPExcel使用-使用PHPExcel导出文件-导出MySQL数据
  2. 推荐系统发展的六大影响因子 | 深度
  3. CMakeListx.txt 编辑语法学习
  4. 蓝桥杯_算法训练_动态数组使用
  5. ios之第一个程序Hello word, I am chenyu !
  6. 计算机硬件能够直接识别的语言是英语,计算机硬件能直接识别、执行的语言是()...
  7. 玩转SpringBoot 2 之项目启动篇
  8. 点对点借贷dApp Yield宣布流动性激励迁移至SushiSwap
  9. 局域网传文件_手机和电脑之间互传比较大的文件,哪种方式比较好?
  10. 超强的用linux命令勾搭美女
  11. Flutter ContrainedBox
  12. 制作课件的软件及特点作用
  13. PS 自定义画笔工具
  14. Java后端技术知识点汇总(思维导图)
  15. java网吧计费系统源码_网吧计费管理系统 - WEB源码|JSP源码/Java|源代码 - 源码中国...
  16. 华为云域名转入到阿里云的基本流程
  17. Django读取图片
  18. windows10 易升 下载失败 解决方法
  19. html制作古诗念奴娇,《念奴娇·赤壁怀古》的教学设计
  20. FileReader 对象实现图片预览

热门文章

  1. java 判断数的位数_Java判断数字位数的两种方法
  2. python 如何建立图形用户界面_python(五)图形用户界面easyGUI入门
  3. 计算机伦理问题案例分析,基于网络环境的案例教学在《计算机伦理学》中的实践研究...
  4. c语言一对圆括号不能,C语言单元习题集
  5. ylinux系统找到软件_电脑用了段时间发现多处一些软件该怎么办?
  6. linux查看CPU利用率与负载,Linux CPU负载利用率统计
  7. java内存栅栏_内存屏障(Memory Barriers/Fences) - 并发编程中最基础的一项技术
  8. linux mysql 1045 错误_Linux 下,mysql数据库报无法登陆错误:ERROR 1045 (28000): Access denied for use...
  9. java基本数据类型_Java面试题Java中有几种基本数据类型?它们分别占多大字节?...
  10. java未将对象引用设置_未将对象引用到实例怎么解决_常见问题解析,java