redis内置了很多常用数据结构,常场景了解这些数据结构的用数业务应用功能和应用场景能够让我们在需求开发时灵活运用来解决实际问题。 String是构介redis中最基础的数据结构,你可以把它用作缓存最基础的绍和kv(key-value)类型的缓存(value最大为512MB),只需要把需要缓存的分析对象进行string的编解码即可。另外String也可以保存数值类型的常场景数据,就可以来实现计数功能(redi提供了incr等原子操作) 常见应用场景 List列表更多的时候是把它当成队列使用(最大2^32 - 1个元素),使用入队出队功能,如果来使用它作为各种列表的话,很多时候不具备防重功能在使用的时候不是很方便。 常见应用场景 Set是一种无序不重复的集合,添加删除检查是否存在都是O(1)的时间复杂度。云服务器 Sorted Set是结合了List和Set的一种数据结构,有序(按照元素score排序)的不重复(元素key不重复)的集合,Sorted Set是在业务开发中非常常用的数据结构(比List和Set应用面更广),因为在实际需求中,存在非常多的列表场景,比如视频列表、评论列表、关注列表、点赞列表、排行榜等等各种列表,每个列表都要按照一定规则排序,并且大部分都不能重复,所以使用Sorted Set就非常合适。 常见应用场景 hash是一个map结构,可以像存储对象的多个字段一样存储一个key的云南idc服务商多类数据。 常见应用场景 redis中的pub/sub可以实现广播功能,类似rocketmq中的broadcast 常见应用场景 除了上述最基本的数据结构外,redis还提供了一些其他的数据结构,有的是需要安装相关redis stack来使用的。 bitmap本质上还是使用的string字符串,不过可以通过bit来进行操作,把这个key的value值想象成bit组成的数组。 常见应用场景 bloomfilter(也叫布隆过滤器)可以理解成一种特殊的set集合,它可以用来判断一个值是否在这个集合中,不过不同于普通的set,它的判断存在一定误判的可能(假阳性),如果bloomfilter判断一个值不在这个集合中,那么一定不在,但是如果判断在,那么有可能不在。 常见应用场景 减少请求量、缓存穿透量: 比如为了防止大量请求查询缓存不存在穿透到数据库中查询,我们可以在缓存查询前加一层布隆过滤器的查询,如果不在布隆过滤器中,说明数据肯定不在数据库和缓存中,就不需要继续查询了。 hyperloglog是一种概率性的去重计数数据结构,可以实现一定精度的去重计数 常见应用场景 geohash可以实现距离计算、距离查询等地理位置相关的功能 常见应用场景redis数据结构