zoukankan      html  css  js  c++  java
  • 分布式缓存的面试题3

    1、面试题

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

    2、面试官心里分析

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

    其实问这个问题呢。。。主要就俩原因

    第一,看看你到底有没有全面的了解redis有哪些功能,一般怎么来用,啥场景用什么,就怕你别就会最简单的kv操作

    第二,看看你在实际项目里都怎么玩儿过redis

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

    3、面试题剖析

    1string

    这是最基本的类型了,没啥可说的,就是普通的setget,做简单的kv缓存

    2hash

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

    key=150

    value={

      “id”: 150,

      “name”: “zhangsan”,

      “age”: 20

    }

    hash类的数据结构,主要是用来存放一些对象,把一些简单的对象给缓存起来,后续操作的时候,你可以直接仅仅修改这个对象中的某个字段的值

    value={

      “id”: 150,

      “name”: “zhangsan”,

      “age”: 21

    }

    3list

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

    微博,某个大v的粉丝,就可以以list的格式放在redis里去缓存

    key=某大v

    value=[zhangsan, lisi, wangwu]

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

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

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

    4set

    无序集合,自动去重

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

    得基于redis进行全局的set去重

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

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

    5sorted 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

  • 相关阅读:
    java7-4 继承的练习
    java7-3 继承
    cocos2d-x之计时器初试
    cocos2d-x之物理按键初试
    cocos2d-x之加速度传感器初试
    cocos2d-x之多点触碰初试
    cocos2d-x之事件传递
    cocos2d-x之单点触碰初试
    cocos2d-x之value
    cocos2d-x之Vector与map
  • 原文地址:https://www.cnblogs.com/daiwei1981/p/9411569.html
Copyright © 2011-2022 走看看