普通集群的redis有啥特殊场景解决不了的问题吗
来源:4-19 基于Redis实现真正高可用的锁--RedLock

洪小才
2023-01-15
视频里没有说,可以在这里补充一下吗?大师
1回答
-
大能老师
2023-01-18
缓存、数据共享分布式、分布式锁、全局 ID、计数器、限流、位统计、购物车、用户消息时间线 timeline、消息队列、抽奖、点赞、签到、打卡、商品标签、商品筛选、用户关注、推荐模型、排行榜。
使用场景比较多,但是如果你自己观察这些场景,可以发现有几个特点:以下列几个场景来进行分析
1、数据量比较小
这个也和redis的设计有关系,redis的设计是存储在内存里面的,注定无法存储海量数据,所以对于海量数据的应用场景比较无力,无法存储大规模数据,所以redis无法应用在海量数据存储的场景。业界通常使用HDFS等方案来存储大规模数据。同时Redis的数据存储数量也无法超过数据库,如果需要如果数据库某张大表需要频繁查询,但是数据命中都比较无规律,那么需要频繁导致大表内数据到redis内存不断IO加载,也会引发内存淘汰策略,因此,在这种场景下Redis的使用也比较受限。
2、非计算密集型场景
如果仔细分析以上场景,可以发现大部分场景都是存和取,计算类型的特别少,顶多是取个并集或者交集。如果对于数据密集型的场景,比如海量数据实时计算,海量数据离线计算,大规模并行计算等,redis也是处理不了的。业界通常在Hadoop生态的基础上,使用MapReduce、Spark等的并行计算来进行海量数据的处理。当然计算只是海量数据解决方案的其中一个环节,期间还涉及数据清洗,数据采集等等环节,有兴趣可以进行更深了解。
redis虽然支持多种数据结构,有着优秀的数据存取性能,更多可参考《Redis设计与实现》这本书,但是数据结构并没有特别针对查询进行优化,比如设计内存索引体系,或者也没有类似es那种倒排索引机制来加速检索效果。对于检索相关场景业界通常使用ES来进行处理。
4、媒体类数据无关
redis对于媒体类或者文档类数据的处理也比较无力,无论是存储还是处理或者检索,都比较无力,第一是媒体类数据比较大,redis又是基于内存的数据库,存储比较受限,另外如果将媒体数据进行序列号后进行存储,那么对媒体内容的检索又会造成负担。业界对于文档类数据存储采用mangoDB,对于媒体类的存储,一般依赖于公有云的基础设施和ai来进行音频识别和图像识别。这期间又涉及很多云计算和机器学习的知识,有兴趣可自行了解一下。
综上,同学可以针对Redis的设计,容量,计算模式,瓶颈等诸多方面去分析redis的不足,就可以自行分析出Redis更多不适用哪些场景。
10
相似问题