内存KV缓存/数据库,可以选择它? | 1分钟系列

简介: 互联网业务,绝大部分场景,会使用缓存服务。

互联网业务,绝大部分场景,会使用缓存服务

但有时候,确实会使用到进程内存缓存/数据库,这个时候,LevelDB就能派上用场了。
啥是LevelDB?
LevelDB是Google开发的,一个速度非常块的KV存储(storage library),它支持字符串的key与字符串的value,并且这种映射关系按key排序(ordered mapping)。
LevelDB有什么特点?
(1)key和value可以是字符串或者字节流;
(2)数据默认按key排列,有序存储;
画外音:调用方可以重载排序方法,以实现自定义排序。
(3)简单易用,基本操作只有3种:
    - Put(key, value)
    - Get(key)
    - Delete(key)
(4)提供原子批量修改接口;
(5)支持数据快照
(6)支持数据自动压缩;画外音:使用的是snappy压缩算法。
(7)开源,文档很详尽,Google出品很可靠;
LevelDB有什么局限?
(1)LevelDB不是一个SQL数据库,没有关系型的存储模型,不支持SQL语句,不支持索引
(2)同时只能有一个进程(当然,这个进程可以是多线程的)访问一个特定的数据库
(3)LevelDB只是一个lib库,没有实现什么client-server网络通讯什么的,当然用户可以自己将lib包装一层,实现自己的server;
LevelDB的性能如何?内存缓存的特点就是
Google也进行了一系列测试:测试库共100w行记录,每条记录16字节的key,100字节的value,压缩后的value大概50字节。
写性能
顺序写:平均每次操作耗时1.765微秒,即支持每秒大概55w次顺序写操作;
顺序写+每次都刷盘:平均每次操作耗时268.409微妙,即支持每秒大概3700次的刷盘写操作
随机写:平均每次操作耗时2.460微秒,即支持每秒大概40w次随机写操作
更新写:平均每次操作耗时2.380微秒,性能和随机写差不多

读性能
随机读:平均每次操作耗时16.677微秒,即支持每秒大概6w次随机读操作
顺序读:平均每次操作耗时0.476微秒,即支持每秒大概210w次顺序读操作
逆序读:平均每次操作耗时0.724微秒,即支持每秒大概130w次逆序读操作

上述性能都是在没有打开“压缩”功能下的结果,如果打开“压缩”选项,性能会有所提升。画外音:Google非常诚实的提到,由于100w行的数据量很小,这些数据是能够完全放入内存。
如果仅限于方案调研,上面的内容应该够用了;如果想了解LevelDB内部的细节,未来再撰文吧。

本文转自“架构师之路”公众号,58沈剑提供。

目录
相关文章
|
6月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
1067 5
|
11月前
|
缓存 并行计算 PyTorch
PyTorch CUDA内存管理优化:深度理解GPU资源分配与缓存机制
本文深入探讨了PyTorch中GPU内存管理的核心机制,特别是CUDA缓存分配器的作用与优化策略。文章分析了常见的“CUDA out of memory”问题及其成因,并通过实际案例(如Llama 1B模型训练)展示了内存分配模式。PyTorch的缓存分配器通过内存池化、延迟释放和碎片化优化等技术,显著提升了内存使用效率,减少了系统调用开销。此外,文章还介绍了高级优化方法,包括混合精度训练、梯度检查点技术及自定义内存分配器配置。这些策略有助于开发者在有限硬件资源下实现更高性能的深度学习模型训练与推理。
1997 0
|
8月前
|
存储 缓存 监控
手动清除Ubuntu系统中的内存缓存的步骤
此外,只有系统管理员或具有适当权限的用户才能执行这些命令,因为这涉及到系统级的操作。普通用户尝试执行这些操作会因权限不足而失败。
1412 22
|
机器学习/深度学习 存储 缓存
LLM高效推理:KV缓存与分页注意力机制深度解析
随着大型语言模型(LLM)规模和复杂性的增长,高效推理变得至关重要。KV缓存和分页注意力是优化LLM推理的两项关键技术。KV缓存通过存储键值对减少重复计算,而分页注意力则通过将序列分割成小块来降低内存消耗,从而有效处理长序列。本文深入剖析这些技术的工作原理及其在仅解码器模型中的应用,探讨其优势与挑战,并展示其实现示例。
858 16
LLM高效推理:KV缓存与分页注意力机制深度解析
|
12月前
|
机器学习/深度学习 人工智能 缓存
MHA2MLA:0.3%数据微调!复旦团队开源推理加速神器,KV缓存狂降96.87%
MHA2MLA是复旦大学、华东师范大学、上海AI Lab等机构联合推出的数据高效微调方法,通过引入多头潜在注意力机制(MLA),显著优化基于Transformer的LLM推理效率,降低推理成本。
447 1
MHA2MLA:0.3%数据微调!复旦团队开源推理加速神器,KV缓存狂降96.87%
|
12月前
|
缓存 NoSQL 关系型数据库
WordPress数据库查询缓存插件
这款插件通过将MySQL查询结果缓存至文件、Redis或Memcached,加速页面加载。它专为未登录用户优化,支持跨页面缓存,不影响其他功能,且可与其他缓存插件兼容。相比传统页面缓存,它仅缓存数据库查询结果,保留动态功能如阅读量更新。提供三种缓存方式选择,有效提升网站性能。
242 1
|
12月前
|
消息中间件 缓存 NoSQL
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)
|
存储 缓存 自然语言处理
SCOPE:面向大语言模型长序列生成的双阶段KV缓存优化框架
KV缓存是大语言模型(LLM)处理长文本的关键性能瓶颈,现有研究多聚焦于预填充阶段优化,忽视了解码阶段的重要性。本文提出SCOPE框架,通过分离预填充与解码阶段的KV缓存策略,实现高效管理。SCOPE保留预填充阶段的关键信息,并在解码阶段引入滑动窗口等策略,确保重要特征的有效选取。实验表明,SCOPE仅用35%原始内存即可达到接近完整缓存的性能水平,显著提升了长文本生成任务的效率和准确性。
746 3
SCOPE:面向大语言模型长序列生成的双阶段KV缓存优化框架
|
12月前
|
SQL 存储 缓存
【赵渝强老师】达梦数据库的内存结构
本文介绍了达梦数据库管理系统的内存结构,包括内存池、缓冲区、排序区和哈希区。内存池分为共享内存池和运行时内存池,能够提高内存申请与释放效率,并便于监控内存使用情况。缓冲区涵盖数据缓冲区、日志缓冲区、字典缓冲区和SQL缓冲区,用于优化数据读写和查询性能。排序区和哈希区分别提供排序和哈希连接所需的内存空间,通过合理配置参数可提升系统效率。文内附有具体配置示例及视频讲解,帮助用户深入理解达梦数据库的内存管理机制。
397 0