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

    string(字符串)

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

    使用场景

    • 常规key-value缓存应用;

    list(列表)

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

    使用场景

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

    set(集合)

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

    使用场景

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

    hash(散列)

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

    使用场景

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

    zset(有序集合)

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

    使用场景

    • 排行版;
    • 带权重的消息队列;
  • 相关阅读:
    关于Oracle 数据库使用dba_tables或者all_tables或者user_tables统计数据时,与直接查询表统计时数据不一致的记录
    js格式化时间
    slf4j介绍以及与Log4j、Log4j2、LogBack整合方法
    LogBack日志小记
    log4j2 日志框架小记
    Log4j日志框架小记
    29.求数字组最大子序列之和
    28.找出最的几位数
    27.数组元素重复度过数组长度一半
    26.字符串全排列
  • 原文地址:https://www.cnblogs.com/woods1815/p/10424769.html
Copyright © 2011-2022 走看看