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

    string(字符串)

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

    使用场景

    • 常规key-value缓存应用;

    list(列表)

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

    使用场景

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

    set(集合)

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

    使用场景

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

    hash(散列)

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

    使用场景

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

    zset(有序集合)

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

    使用场景

    • 排行版;
    • 带权重的消息队列;
  • 相关阅读:
    A1052. Linked List Sorting (25)
    A1032. Sharing (25)
    A1022. Digital Library (30)
    A1071. Speech Patterns (25)
    A1054. The Dominant Color (20)
    A1060. Are They Equal (25)
    A1063. Set Similarity (25)
    电子码表
    矩阵键盘
    对象追踪、临时对象追踪、绝对坐标与相对坐标
  • 原文地址:https://www.cnblogs.com/woods1815/p/10424769.html
Copyright © 2011-2022 走看看