Tokyo Tyrant(TTServer)系列(六)-数据丢失谁的错
,false,1,100);
$mem->addServer ("127.9.9.1",1978,false,1,100);
$start=microtime(true);
for($i=0;$i<50000;$i++){
$mem->add("test_".$i,"INFO 127122222 a b c d{....}");
}
print_r($mem->getExtendedStats());
echo microtime(true)-$start;
?>

运行过程中。拔掉机器电源后,再又一次启动机器。然后启动ttserver 。发现两个端口的ttserver都仅仅剩下16000条数据(我測试的结果)。
所以:ttserver意外崩溃。比如进程直接kill -9 是不会丢失数据的。假设系统断电是会丢失数据的。
这应该是ttserver仅仅是把数据写到文件系统,并没有flush到磁盘造成的。
怎样解决(參考网上资料)
ttserver 事实上提供了一个同步命令sync,能够把数据flush到磁盘。只是每次都调用。性能将会急剧下降。为了不减少性能。数据可靠性得到保证,能够採用记录日志的方式,出现意外断电能够从日志恢复数据。还能够使用主从复制。master丢失数据,slave的数据还在(推荐),也能够定期的运行下sync命令。
事实上,这个与mysql数据库事务日志刷新级别有极其类似的原理。TC支持异步的写入机制。就是说写入的数据能够不一定刷到磁盘上。能够等到一定条件后(比方间隔多长时间)再进行同步操作。
这个异步的优点当然就是快,坏处当然就是可能在突发情况下丢失一些数据。TC的大部分写入方法都是同步的。并且会在操作过程中进行异步数据的同步磁盘写入。
假设是数据不是特别大(一般不要超过内存太多,依据操作系统。32位的操作系统单个文件不能超过2G,64位操作系统则无限制)
注:序列化问题
在实际应用中更经常使用 memcache 协议使用ttserver。当我们从中取数据时,会是一个序列化的字符串,没有自己主动反序列化处理。但在memcached服务器上却是自己主动反序列化的。这样我们先将数据取出。如: a:1:{s:5:"value";s:14:"this is a value";} ,再利用 unserialize() 函数反序列化就能够使用了。
Tokyo Tyrant(TTServer)系列(六)-数据丢失谁的错的更多相关文章
- Tokyo Tyrant(TTServer)系列(四)-tcrmgr远程管理与调试
Tokyo Tyrant(TTServer)系列-tcrmgr(远程管理与调试) tcrmgr是TokyoTyrant的管理工具,对ttserver进行管理与执行命令: 通过输入tcrmgr回车,能够 ...
- Tokyo Tyrant(TTServer)系列(一)-介绍和安装
Tokyo Cabinet 是日本人Mikio Hirabayashi 开发的一款DBM 数据库,该数据库读写很快.哈希模式写入100 万条数据仅仅需0.643 秒.读取100 万条数据仅仅需0.77 ...
- 性能强劲的Tokyo Cabinet 和 Tokyo Tyrant
Tokyo Cabinet Tokyo Cabinet (简称TC)是Mikio Hirabayashi开发的一种DBM的开发库,其数据文件只有一个,里面存放多个<key,value>的数 ...
- TT(Tokyo Tyrant )介绍及使用
Tokyo Cabinet 是日本人 平林幹雄 开发的一款 DBM 数据库,该数据库读写非常快,哈希模式写入100万条数据只需0.643秒,读取100万条数据只需0.773秒,是 Berkeley D ...
- mongodb vs redis(Tokyo Tyrant转)
* MongoDB vs Redis vs Tokyo Tyrant(原文链接:http://www.cnblogs.com/riceball/archive/2010/03/05/MongoDB_V ...
- CSS 魔法系列:纯 CSS 绘制各种图形《系列六》
我们的网页因为 CSS 而呈现千变万化的风格.这一看似简单的样式语言在使用中非常灵活,只要你发挥创意就能实现很多比人想象不到的效果.特别是随着 CSS3 的广泛使用,更多新奇的 CSS 作品涌现出来. ...
- WCF编程系列(六)以编程方式配置终结点
WCF编程系列(六)以编程方式配置终结点 示例一中我们的宿主程序非常简单:只是简单的实例化了一个ServiceHost对象,然后调用open方法来启动服务.而关于终结点的配置我们都是通过配置文件来 ...
- SQL Server 2008空间数据应用系列六:基于SQLCRL的空间数据可编程性
原文:SQL Server 2008空间数据应用系列六:基于SQLCRL的空间数据可编程性 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 ...
- R语言数据分析系列六
R语言数据分析系列六 -- by comaple.zhang 上一节讲了R语言作图,本节来讲讲当你拿到一个数据集的时候怎样下手分析,数据分析的第一步.探索性数据分析. 统计量,即统计学里面关注的数据集 ...
- java基础解析系列(六)---深入注解原理及使用
java基础解析系列(六)---注解原理及使用 java基础解析系列(一)---String.StringBuffer.StringBuilder java基础解析系列(二)---Integer ja ...
随机推荐
- Oracle Linux logoOracle Linux
http://www.oschina.net/p/oracle_enterprise_linux
- 手机在线更新系统MySQL数据库服务器参数优化mycnf,16G内存8核CPU,
业务场景: 后台支持手机在线更新系统,db服务器内存16G,8核,dell的pc服务器. qps: 200个左右 tps: 1个左右 一分钟50几个 sort_buffer_size = 32M 大了 ...
- tcpdump的使用
tcpdump命令的控制分4个部分 控制tcpdump行为 -c 控制抓取报文的个数 -p 非混杂模式 -s 限制报文长度,0 为不限制 -w 保存抓取的报文到指定路径 -r 从pcap报文读取报文 ...
- iOS-Runtime、对象模型、消息转发
Objective-C只是在C语言层面上加了些关键字和语法.真正让Objective-C如此强大的是它的运行时.它很小但却很强大.它的核心是消息分发. Message 执行一个方法,有些语言.编译器会 ...
- Android 卡顿优化 3 布局优化 工具 Hierarchy Viewer
欲善其事, 先利其器. 分析布局, 就不得不用到Hierarchy Viewer了. 本文工具使用皆以GithubApp的详情界面RepoDetailActivity为例说明. 为了不影响阅读体验, ...
- [转]Understanding Integration Services Package Configurations
本文转自:http://msdn.microsoft.com/en-us/library/cc895212.aspx Introduction With the 2008 release, SQL S ...
- Windows DiskPart工具使用
启动工具 diskpart 列出磁盘列表 list disk 选择磁盘 select disk 1 转换为GPT分区 convert gpt 列出分区 list partition 清除所有分区 cl ...
- 流畅的python第十四章可迭代的对象,迭代器和生成器学习记录
在python中,所有集合都可以迭代,在python语言内部,迭代器用于支持 for循环 构建和扩展集合类型 逐行遍历文本文件 列表推导,字典推导和集合推导 元组拆包 调用函数时,使用*拆包实参 本章 ...
- 在做了 BasePage 时: 只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态。还请确保在应用程序配置的 / / 节中包括
摘自: http://lichengguizy.blog.163.com/blog/static/11771858620122342749552/ 只有在配置文件或 Page 指令中将 enableS ...
- [PHP]如何使用Mobile_Detect来判断访问网站的设备:安卓,平板,电脑
Mobile_Detect 是一个轻量级的开源移动设备(手机)检测的 PHP Class, 它使用 User-Agent 中的字符串,并结合 HTTP Header,来检测移动设备环境. 这个设备检测 ...