解决方案-Redis各数据类型最适合的场景

2021/9/14 2:05:06

本文主要是介绍解决方案-Redis各数据类型最适合的场景,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

本文涵盖Redis各个数据结构最适合的场景(朋友圈,用户关注模型,微博热榜,购物车,电商搜索…)

我们先来介绍一下redis的value数据类型在各场景下的使用
在这里插入图片描述

String类型

string 是Redis的最基本的数据类型,可以理解为与 Memcached 一模一样的类型,一个key 对应一个 value。string 类型是二进制安全的,意思是 Redis 的 string 可以包含任何数据,比如图片或者序列化的对象,一个 redis 中字符串 value 最多可以是 512M。

String类型的基本命令
在这里插入图片描述

String类型的应用场景

在这里插入图片描述
在这里插入图片描述

Hash结构

hash 是一个键值对集合,是一个 string 类型的 key和 value 的映射表,key 还是key,但是value是一个键值对(key-value)。类比于 Java里面的 Map<String,Map<String,Object>> 集合。

Hash结构的基本命令
在这里插入图片描述

Hash结构的使用场景图片
在这里插入图片描述

如果我要存储一个文章的点赞数,是使用string类型好还是hash类型好呢?一定是使用hash类型,因为hash类型可以对某条记录的某个字段进行修改,若是使用string,我们需要将记录从json转为obj,再操作点赞数字段后转为json存入redis.

使用Hash来实现简易购物车
在这里插入图片描述

List结构

list 列表,它是简单的字符串列表,按照插入顺序排序,你可以添加一个元素到列表的头部(左边)或者尾部(右边),它的底层实际上是个链表。

列表有两个特点:一、有序 二、可以重复

List结构的基础命令
在这里插入图片描述

List结构的使用场景
在这里插入图片描述

信息流使用数据库order by也可以实现,但是使用list可以很高效。
但是用户粉丝量多的话redis扛不住。↓↓↓↓↓List实现用户关注信息流列表↓↓↓↓↓
在这里插入图片描述

Set数据结构

Redis 的 set 是 string 类型的无序集合。

相对于列表,集合也有两个特点:一、无序二、不可重复

Set常用的基础命令
在这里插入图片描述

Set集合的一些运算操作(下面用户关注模型用到)
在这里插入图片描述

SINTER:求交集

SUNION:求并集

SDIFF:求差集:set1-(SUNION(set2,set3)):set1减去set2与set3的并集

Set应用场景
在这里插入图片描述

Set数据结构实现“社交用户关注模型” ↓↓↓↓↓↓↓↓↓↓
在这里插入图片描述
在这里插入图片描述
可以看到上面的微博微关系,这些微关系有什么用呢?

比如我和A有很多共同关注,在社交平台的数据库中认为我和A是好朋友,有一天A买了一台MAC,平台会认为我可能也会喜欢,于是第二天社交平台上推荐的广告就是那台MAC。

Set数据结构在电商搜索中的应用在这里插入图片描述

ZSet数据结构

zset (sorted set ) redis
有序集合zset和集合set一样也是string类型元素的集合,且不允许重复的成员。不同的是 zset
的每个元素都会关联一个分数(分数可以重复),redis 通过分数来为集合中 的成员进行从小到大的排序。

ZSet的常用命令
在这里插入图片描述

ZSet实现排行榜
在这里插入图片描述

若朋友圈点赞需要排序,则可以使用ZSet存储,score为时间戳,number点赞为用户ID。

完结撒花

在开发场景下,若要使用缓存,会第一时间想到使用redis.我想还是因为redis的性能之高,速度之快。

问:redis是如何做到性能这么高呢?

答:1.redis基于内存实现的特点。2.NIO
3.redis优秀的数据结构。redis的key一般来说都是string类型,可是value有很多不同的逻辑类型,例如set,list,hash等,在这些逻辑类型后还有真正实现存储的结构,例如双向链表,跳表等。

关注公众号:方案山谷

在这里插入图片描述



这篇关于解决方案-Redis各数据类型最适合的场景的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程