问题一:Redis 能够取代 Memcached 的原因是什么?
Redis 能够取代 Memcached 的原因是什么?
参考回答:
Redis 能够取代 Memcached 的原因不仅在于其 KV 性能更优,更在于 Redis 提供了更多的数据结构,这些结构为业务视角提供了更多便利。此外,Redis 还具备 PubSub(发布订阅)、Lua 脚本、持久化、集群等一系列机制,这些功能丰富了 Redis 的使用场景,使其逐渐脱离了 Memcached 仅用于 cache 加速的简单用途,而承担了更多的业务职责。
关于本问题的更多回答可点击原文查看:
https://developer.aliyun.com/ask/655876
问题二:Tair 扩展了哪些高级数据结构?
Tair 扩展了哪些高级数据结构?
参考回答:
Tair 扩展了多种高级数据结构,包括 TairString(带版本可以 CAS 的 String)、TairHash(支持 field 带过期的 Hash 结构)、TairZSet(多维排序集合)、TairDoc(Json 格式数据)、TairBloom(Bloom 过滤器)、TairTS(时序数据)、TairGIS(R-Tree 地理位置)、TairRoaring(Roaring Bitmap)、TairCPC(Compressed Probability Counting)以及 TairSearch(搜索)等。这些结构为用户提供了更丰富和强大的数据操作能力。
关于本问题的更多回答可点击原文查看:
https://developer.aliyun.com/ask/655877
问题三:为什么 keys * 调用在 Redis 中是一个性能刺客?
为什么 keys * 调用在 Redis 中是一个性能刺客?
参考回答:
在 Redis 中,keys * 调用是一个性能刺客,因为它用于匹配所有满足规则的 key 并返回,这个接口的实现是在整个存储结构上进行的逐个比较,具有 O(N) 的时间复杂度(N 是存储的 Key 总数)。在生产环境中,稍大点的 Redis 实例的 key 数量往往都是数百万甚至更多,导致这个接口的执行效率非常低,可能会引发严重的性能问题。
关于本问题的更多回答可点击原文查看:
https://developer.aliyun.com/ask/655878
问题四:哪些 Redis 接口在数据量增大时可能引发性能问题?
哪些 Redis 接口在数据量增大时可能引发性能问题?
参考回答:
在 Redis 中,一些接口如 smembers、hkeys、hvals、hgetall 等,在数据量增大时可能引发性能问题。这些接口用于完整读取一个 key 的内容,如果不慎误用,在数据量较小时可能不会出现问题,但随着数据的逐渐增多,它们的执行代价会变得非常高,最终可能拉大延迟,拖慢整个服务,甚至导致雪崩。
关于本问题的更多回答可点击原文查看:
https://developer.aliyun.com/ask/655879
问题五:Tair 并发引擎设计的关键点是什么?
Tair 并发引擎设计的关键点是什么?
参考回答:
Tair 并发引擎设计的关键点主要包括实现一个线程安全的 HashMap,支持「渐进式 rehash」以及「并发修改过程中的无状态扫描」。此外,还需要考虑服务的抖动控制、可观测性以及数据流和控制流的隔离与联动。
关于本问题的更多回答可点击原文查看: