zoukankan      html  css  js  c++  java
  • redis五种数据结构及使用场景

    string(字符串)

    • 存储最简单的key-value结构。
    • value可以是字符串、整数或者浮点数。
    • 可以对整个字符串或者字符串的一部分执行操作;
    • 对整数和浮点数执行自增或者自减操作。

    使用场景

    • 常规key-value缓存应用;

    list(列表)

    • 一个链表,链表上的每个节点都包含了一个字符串,字符串可以重复
    • 可以从链表的两端推入或者弹出元素;
    • 根据偏移量对链表进行修剪;
    • 读取单个或多个元素;
    • 根据值查找或者移除元素。

    使用场景

    • 最新消息排行等功能;
    • 消息队列;
    • 关注列表,粉丝列表;

    set(集合)

    • 包含字符串的无序收集器,并且被包含的每个字符串都是独一无二,各不相同的,即不能重复
    • 可以添加、获取、移除单个元素;
    • 检查一个元素是否存在于集合中;
    • 计算交集、并集、差集;
    • 从集合里面随机获取元素。

    使用场景

    • 共同好友,共同喜好,二度好友;
    • 统计网站访问IP(利用唯一性,统计访问网站的所有独立IP);
    • 好友推荐(好友推荐时,根据tag求交集,大于某个阈值就可以推荐);

    hash(散列)

    • 包含键值对的无序散列表,键不能重复
    • 可以添加、获取、移除单个键值对;
    • 获取所有键值对。

    使用场景

    • 存储用户信息(能单独修改用户某一属性信息);

    zset(有序集合)

    • 有序集合的键被称为成员,每个成员都是各不相同的
    • 而有序集合的值被称为分值,分值必须为浮点数;
    • 有序集合是字符串成员与浮点数分值之间的有序映射,元素的排列顺序由分值的大小决定;
    • 可以添加、获取、删除单个元素;
    • 根据分值范围或者成员来获取元素;
    • 有序集合是redis里面唯一一个既可以根据成员访问元素(这一点和散列一样),又可以根据分值以及分值的排列顺序来访问元素的结构;

    使用场景

    • 排行版;
    • 带权重的消息队列;
  • 相关阅读:
    理解全虚拟、半虚拟以及硬件辅助的虚拟化
    使用PowerShell向SharePoint中写入数据
    Python的时间模块小结(转自:不懂真人)
    Windows下如何安装Python的第三方库
    Python的正则表达式笔记
    PG, Pool之间的一些数量关系
    Ceph与OpenStack的Nova相结合
    rbd命令
    rados命令
    ceph命令
  • 原文地址:https://www.cnblogs.com/woods1815/p/10424769.html
Copyright © 2011-2022 走看看