zoukankan      html  css  js  c++  java
  • Redis都有哪些数据类型

    string

      这是最基本的类型了,就是普通的set和get,做简单的kv缓存

     

    hash

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

      key=150

      value={

        “id”: 150,

        “name”: “zhangsan”,

        “age”: 20

      }

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

     

    list

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

      key=某大v

      value=[zhangsan, lisi, wangwu]

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

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

      比如可以搞个简单的消息队列

     

    set

      无序集合,自动去重

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

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

      可以基于set使用交集、并集、差集的操作,比如交集,可以把两个人的粉丝列表做一个交集,看看俩人的共同好友是谁

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

     

    sorted set

      排序的set,去重但是可以排序,写进去的时候给一个分数,自动根据分数排序,最大的特点是有个分数可以自定义排序规则

      比如说你要是想根据时间对数据排序,那么可以写入进去的时候用某个时间作为分数,人家自动给你按照时间排序了

      排行榜:将每个用户以及其对应的什么分数写入进去,zadd board score username,接着zrevrange board 0 99,就可以获取排名前100的用户;

      zrank board username,可以看到用户在排行榜里的排名

     

    转自:中华石杉Java工程师面试突击

  • 相关阅读:
    python下编译py成pyc和pyo
    session_id小问题大影响
    python get,post提交表单
    vmstat命令列出的属性详解
    SGU 223 Little Kings
    POJ 3233 Matrix Power Series
    HDU 2604 Queuing
    HDU 2256 Problem of Precision
    SGU 224 Little Queens
    HDU 2276 Kiki & Little Kiki 2
  • 原文地址:https://www.cnblogs.com/mengchunchen/p/10039096.html
Copyright © 2011-2022 走看看