文件数据缓存(key-Value)
为了解决大量数据缓存,消耗内存过多的问题,特别实现了文件缓存;该缓存主要是应用于多存少读的情况,一般我们做缓存是实现将数据放在内存中或者数据库中;放在内存中就会消耗很大内存,尤其在高并发大数据缓存时,更容易造成内存溢出,数据库在很大程度能够满足我们需求,但是在极端情况,每秒产生很大数据时,数据库速度就是问题;
基于内存和数据库原因,测试将数据直接放在文件中,是很快的,一般的机械硬盘30-45M/s,一次写入速度很快;
整个缓存过程:提高接口,数据缓存50M左右,将数据写入特定的DB文件中,每次10M写入,这样做只是为了平衡硬盘写入,防止影响其它写入;
缓存将数据byte字节(value值写入DB文件),同时形成数据索引将位置放在在索引文件中(csv文件),保存key对应的数据文件名称,对应文件中的位置;每20000个key形成一个文件,再次把该索引文件名称及生产时间写入一个全局索引文件中;
在缓存中需要设置key的缓存个数和缓存时间,默认大小是long的最大值,时间是30分钟(因为我的需要设置);后台现场会在一定环境下启动线程,删除索引文件和DB文件,主要是按照时间,key个数,文件大小来决定启动;
重新读取值时,先检索全局索引,从后往前读取,或者最新生成的数据索引文件,索引文件都分割的很小,所以一次读入到内存,查找key,找到对应的数据位置,在读取具体的值;
整个控制并不是100%精确,这是我的需要,如果做精确控制,则要添加很多同步控制,这样会降低性能和速度,但是也不会影响一般需求使用,肯定比其它方式快;
测试工作已经完成了,是我没有想到是,刚刚开始做的时候觉得应该简单,但是在完成时还是花了很多时间;
一开始的缓存,也是使用了数据库,或者存储用文件索引用文件,最后改成了全部用文件。程序就在在于摸索吧。
程序同步到git和csdn,欢迎大家一起写“废代码”;
数据大小都是按照硬盘30M/s,一般cpu配置写的,如果没有把握不要乱改
文件数据缓存(key-Value)的更多相关文章
- Dcloud课程5 php如何实现文件缓存技术(静态数据缓存)
Dcloud课程5 php如何实现文件缓存技术(静态数据缓存) 一.总结 一句话总结:保存在磁盘上的静态文件,用PHP生成数据到静态文件中.其实cookie和session使用的就是这样的技术,所以c ...
- 文件分片 浏览器文件大小限制 自定义请求头 在一个资源的加载进度停止之后被触发 arrayBuffer 异步 二进制数据缓存区
js 整数限制 浏览器文件大小限制 https://w3c.github.io/FileAPI/#dom-blob-arraybuffer https://developer.mozilla.org/ ...
- Memcache,Redis,MongoDB(数据缓存系统)方案对比与分析
mongodb和memcached不是一个范畴内的东西.mongodb是文档型的非关系型数据库,其优势在于查询功能比较强大,能存储海量数据.mongodb和memcached不存在谁替换谁的问题. 和 ...
- Memcached 数据缓存系统
Memcached 数据缓存系统 常用命令及使用:http://www.cnblogs.com/wayne173/p/5652034.html Memcached是一个自由开源的,高性能,分布式内存对 ...
- ThinkPHP 3.2.3 数据缓存与静态缓存
ThinkPHP 3.2.3 中手册中数据缓存的地址是:http://www.kancloud.cn/manual/thinkphp/1835 静态缓存的地址是:http://www.kancloud ...
- iOS - LocalCache 本地数据缓存
1.自定义方式本地数据缓存 1.1 自定义缓存 1 沙盒路径下的 Library/Caches 用来存放缓存文件,保存从网络下载的请求数据,后续仍然需要继续使用的文件,例如网络下载的离线数据,图片,视 ...
- cache应用(asp.net 2.0 SQL数据缓存依赖 [SqlCacheDependency ] )
Asp.net 2.0 提供了一个新的数据缓存功能,就是利用sql server2005 的异步通知功能来实现缓存 1.首先在sqlserver2005 中创建一个test的数据库. 在SQL Ser ...
- SQL数据缓存依赖 [SqlServer | Cache | SqlCacheDependency ]
前言 本文主要是对<ASP.NET 2.0开发指南>——<数据缓存>章节内容的提取并略有补充. 参考资料 1. <ASP.NET 2.0开发指南> 2. ...
- ASP.NET缓存 Cache之数据缓存
添加 Cache[Key]=object or Cache.Insert 移除 Cache.Remove(key) 1.将值直接写入Cache 代码如下 复制代码 HttpContext.Curre ...
随机推荐
- C# autocomplete
前台代码 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runa ...
- Python mysql-python及pycurl使用一例
#环境:CentOS Linux release 7.5.1804 (Core) mini安装,使用python2.7 #使用pucurl对输入的url地址进行测试,将结果存放到mysql中,代码来之 ...
- 软件安装配置笔记(三)——ArcGIS系列产品安装与配置(补档)(附数据库连接及数据导入)
在前两篇安装配置笔记之后,就忘记把其他安装配置笔记迁移过来了,真是失误失误!趁现在其他文档需要赶紧补上. 目录: 一.ArcMap 二.ArcMap连接数据库并导入数据 三.Arcgis Pro 四. ...
- 微信小程序上传后发布或者体验版测试无数据解决办法
在做微信小程序开发的过程中,发现小程序在本地调用接口的数据都显示,但是上传之后,发现手机体验没有数据.以下为解决办法: 1.先清除缓存试试. 2.打开微信小程序工具右上角的详情——项目设置,将“不校验 ...
- 前端---js02
主要内容 1.数组 2.字符串 3.Date日期对象 4.内置对象 5.定时器 6.DOM 7.伪数组 内置对象: 1 数组(列表) Array (1) 数组的创建 <script>//字 ...
- Spring Boot 打war包后自定义404页面不生效解决方法
最近做一个项目,自定义了404页面,本地测试可以到自定义页面,但是打包放到tomcat里面就不行.搞了一天终于看到一个比较正确的方法.下面附上连接,非常感谢各位博主们 1.https://blog.c ...
- 你好git
在老师的推荐下,这次我第一次打开了github,作为一个菜鸟,对于这些功能还是有些新奇的,所以也摸索了很久. GIthub是一个基于git的社会代码分享社区,可以建立公开的,免费的分享代码,也可以关注 ...
- Spock - Document - 03 - Data Driven Testing
Data Driven Testing Peter Niederwieser, The Spock Framework TeamVersion 1.1 Oftentimes, it is useful ...
- Python练习八
1.获取移动平均值. def generator(): sum = 0 num = 0 count = 0 avg = 0 while 1: num = yield avg sum += num co ...
- 【代码问题】MatConvNet自带example中 fast_rcnn_evaluate出错
fast_rcnn_evaluate中调用cnn_setup_data_voc07函数读取相关数据时,在类似 [gtids,t]=textread(sprintf(VOCopts.imgsetpath ...