redis五种数据结构及使用场景

版权声明:本文为博主原创文章,未经博主允许不得转载 https://blog.csdn.net/M__L__/article/details/87898282

string(字符串)

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

使用场景

  • 常规key-value缓存应用;

list(列表)

 

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

使用场景

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

set(集合)

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

使用场景

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

hash(散列)

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

使用场景

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

zset(有序集合)

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

使用场景

  • 排行版;
  • 带权重的消息队列;

猜你喜欢

转载自blog.csdn.net/M__L__/article/details/87898282