Bloom过滤器是一种概率型数据结构,能以极小的内存开销快速判断元素是否属于某个集合,虽存在假阳性但不会漏报。本文介绍了如何利用Bloom过滤器将API查询速度提升16倍,并通过实际案例展示了其在缓存、数据库查询优化等场景中的巧妙应用。
#data-structures
14 条相关内容
Bloom filters are a probabilistic data structure that can dramatically improve API performance. By using a space-efficient method to test set membership, incident.io achieved 16× faster response times for certain API endpoints. This niche technique proves valuable for optimizing web applications where quick existence checks are needed.
《太多链表》是一本通过实现各种链表数据结构来教授 Rust 语言的在线教程。它从基础的单向链表开始,逐步深入到双向链表、栈分配链表等更复杂的实现,帮助读者在实践中掌握 Rust 的所有权、借用、生命周期等核心概念。教程风格幽默,适合有一定编程基础但希望系统学习 Rust 的开发者。
决策图
1.0决策图是一种用于表示决策过程的可视化工具,通过节点和边展示决策路径、条件和结果,帮助分析复杂决策场景并优化决策流程。
本文探讨了消息传递在数据处理中的重要性,指出大量数据蕴含着难以名状的形态,需要我们重新审视消息传递机制在揭示这些形态中的关键作用。
本文介绍了一种在C语言中实现类型安全通用数据结构的独特技术,通过联合体将类型信息与通用数据结构关联,适用于各种数据结构类型,并以链表实现为例进行说明。
本文介绍了一种在C语言中实现的数据结构,它具有常数时间索引、稳定指针的特性,并且与竞技场分配器配合良好。这种结构曾被不同程序员独立发现,因此有多种名称,如"分段列表"或std::deque的类似实现。
本文探讨了数组的概念模型,将一维数组视为定义在整数区间上的函数,并扩展到多维数组和表格。作者通过函数式编程的视角解释了APL风格的多维数组与表格之间的本质区别,特别是异构数据结构如何限制了表格的多轴扩展能力。
Redis 4.0将引入Streams数据结构,这是一种通用日志式数据结构,支持带字段的条目、范围查询、阻塞读取和消费者组功能,填补了Redis在消息序列和时间序列应用中的空白。
Redis 5 引入的 Streams 数据结构不仅适用于消息传递场景,更是一个通用的数据结构。它类似于增强版的 CSV 文件,支持时间序列、范围查询和内存高效存储,比传统的 Sorted Set + Hash 方案节省 13 倍内存。
为链表辩护
2.0作者针对当前对链表的轻视态度,从教育价值、可扩展性、实用性、简洁性和概念性等多个角度,全面阐述了链表的独特优势与魅力,呼吁重新认识这一基础数据结构的重要性。
扩展HNSWs
3.5作者分享了在Redis中实现HNSW(分层可导航小世界图)数据结构的经验,重点讨论了内存优化、多线程处理、节点删除和可扩展性等高级主题。通过向量量化、双向链接和创新的内存回收策略,实现了高性能的向量相似性搜索。
元素序列的成对顺序
1.0本文探讨了元素序列中成对顺序的概念,即序列中任意两个元素之间的相对顺序关系。这种成对顺序分析在排序算法和数据结构研究中具有重要意义,可以帮助理解序列的局部有序性特征。
跳表有什么用处?
1.5跳表是一种概率性数据结构,通过多层索引实现O(log n)时间复杂度的查找、插入和删除操作,在并发编程和内存数据库等场景中比平衡二叉搜索树更具优势。