阅读 324

【Redis】不同数据结构之间的差异及应用场景

Redis 数据类型

Redis支持五种数据类型。

string(字符串),list(列表),set(集合),hash(哈希),及zset(sorted set:有序集合)。

String 字符串

image

简介:

字符串类型是Redis中最为基础的数据存储类型,是一个由字节组成的序列,是标准的key/value,一般来存字符串,整数和浮点数。

特性

可以包含任何数据,比如jpg图片或者序列化的对象,一个键最大能存储512M。

应用场景:

在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如jpeg图像数据、json对象描述信息等。

List 列表

image
简介:

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部或者尾部。

特点:

1、有序、可以重复。

2、是链表结构,所以向列表两端添加元素的时间复杂度为0(1),增删快。

3、提供了操作某一段元素的API。

应用场景:

1、最新消息排行榜,比如朋友圈的时间线、App内消息通知。

2、消息队列,以完成多程序之间的消息交换。可以用push操作将任务存在list中,然后线程在用pop操作将任务取出进行执行。

Set 集合

image

简介:

Redis 的 Set 是 String 类型的无序集合,和List一样是简单的字符串列表。

特点:

1、无序,不可重复的。

2、为集合提供了求交集、并集、差集等操作。

3、集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。

应用场景:

1、共同好友。【取交集】

2、统计访问网站的所有独立ip。【元素不可以重复】

3、好友推荐时,根据tag求交集,大于某个阈值就可以推荐。

Hash 哈希

image

简介:

Redis中的Hash散列可以看成具有String key和String value的map容器,可以将多个key-value存储到一个key中。

特点:

适合存储对象,并且可以像数据库中update一个属性一样只修改某一项属性值。【Memcached中需要取出整个字符串反序列化成对象修改完再序列化存回去】。

应用场景:

存储、读取、修改用户属性。

Sort-Set 有序集合

image

简介:

Redis 有序集合和集合一样也是string类型元素的集合。将Set中的元素增加一个权重参数score,元素按score有序排列。

特点:

1、每个元素都会关联一个double类型的分数,数据插入集合时,已经进行天然排序。

2、有序集合的成员是唯一的,但分数是(score)可以重复的。

3、集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。

应用场景:

1、排行榜 。

2、带权重的消息队列。

关注下面的标签,发现更多相似文章
评论