redis常用数据结构介绍和业务应用场景分析

如题所述

第1个回答  2022-08-25
redis内置了很多常用数据结构,了解这些数据结构的功能和应用场景能够让我们在需求开发时灵活运用来解决实际问题。

String是redis中最基础的数据结构,你可以把它用作缓存最基础的kv(key-value)类型的缓存(value最大为512MB),只需要把需要缓存的对象进行string的编解码即可。另外String也可以保存数值类型的数据,就可以来实现计数功能(redi提供了incr等原子操作)

常见应用场景

List列表更多的时候是把它当成队列使用(最大2^32 - 1个元素),使用入队出队功能,如果来使用它作为各种列表的话,很多时候不具备防重功能在使用的时候不是很方便。

常见应用场景

Set是一种无序不重复的集合,添加删除检查是否存在都是O(1)的时间复杂度。

常见应用场景

hash是一个map结构,可以像存储对象的多个字段一样存储一个key的多类数据。

常见应用场景

redis中的pub/sub可以实现广播功能,类似rocketmq中的broadcast

常见应用场景

除了上述最基本的数据结构外,redis还提供了一些其他的数据结构,有的是需要安装相关redis stack来使用的。

bitmap本质上还是使用的string字符串,不过可以通过bit来进行操作,把这个key的value值想象成bit组成的数组。

常见应用场景

bloomfilter(也叫布隆过滤器)可以理解成一种特殊的set集合,它可以用来判断一个值是否在这个集合中,不过不同于普通的set,它的判断存在一定误判的可能(假阳性),如果bloomfilter判断一个值不在这个集合中,那么一定不在,但是如果判断在,那么有可能不在。

常见应用场景

hyperloglog是一种概率性的去重计数数据结构,可以实现一定精度的去重计数

常见应用场景

geohash可以实现距离计算、距离查询等地理位置相关的功能

常见应用场景