redis五中基本数据类型

String

  • String是redis最基本的类型,可以理解为与memcached一模一样的类型,一个key对应一个value。value不仅是string,也可以是数字。string类型是二进制安全的,意思是redis的string类型可以包含任何数据,比如jpg或者序列化的对象。string类型的值最大能存储512M

Hash

  • Hash是一个(key-value)的集合。redis的hash是一个string的key和value的映射表,hash特别适合存储对象。

List

  • list列表是简单的字符串列表,按照插入顺序排序。可以添加一个元素到列表的头部(左边)或者尾部(右边)。
  • 应用场景非常多,比如:微博的关注列表,粉丝列表都可以使用list结构来实现。
  • 数据结构:list就是列表,可以用来当消息队列用。redis提供了list的push和pop操作,还提供了操作某一段的API,可以直接查询或者删除某一段的元素。实现方式:redis list的实现是一个双向链表,支持反向查找和遍历,更方便操作,不过带来了二额外的内存开销。

set

  • set 是string类型的无序集合。set中的元素是没有顺序的,而且是没有重复的。
  • 应用场景:redis set对外提供的功能和list一样是一个列表,特殊之处在于set 是自动去重的,而且set提供了判断 某个成员是否在集合中。

zset

*zset和set一样是string类型的集合,且不允许重复的元素。
*使用场景,zset可以通过用户额外提供一个优先级(score)的参数来为成员排序,而且是插入有序的,即自动排序。当你需要一个有序并且不重复的集合列表,那么可以选择zset结构。

  • 和set相比,zset关联了一个double类型权重的参数score,使得集合中的元素能够按照score进行有序排列,redis正式通过分数来为集合中的成员进行从小到大的排序。
  • 实现方式:redis zset的内部使用HashMap和跳表(skipList)来保证数据的存储和有序,HashMap里面放的是成员到score的映射,而跳跃表里面存放的是所有的成员,排序依据是HashMap上的score,使用跳跃表的结构可以获得比较高的查找效率,并且在实现上比较简单。
类型 简介 特性 场景
String 二进制安全 可以包含任何数据,比如jpg或者序列化对象
Hash 键值对集合,即Java中的map集合 适合存储对象,并且可以像数据库中的update一个字段一样,只修改某一项属性值 存储、读取、修改用户属性
list 链表(双向链表) 增删快,提供了操作某一个元素的api 最新消息排行;消息队列
set hash表实现,元素不重复 添加、删除、查找的复杂度都是O(1),提供求交集、并集、差集的操作 共同好友、利用唯一性,统计访问网站的所有ip
zset 将set中的元素增加一个权重参数score,元素按照score排序 数据插入集合时,已经进行了天然的排序 排行榜;带权重的消息队列
原文地址:https://www.cnblogs.com/liuzhidao/p/14082460.html