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 ...
随机推荐
- .net中的泛型
泛型把类或方法的类型的确定推迟到实例化该类或方法的时候 ,也就是说刚开始声明是不指定类型,等到要使用(实例化)时再指定类型 泛型可以用于 类.方法.委托.事件等 下面先写一个简单的泛型 public ...
- 用ACE来写代码
写在前面 在很多时候,我们想用一个支持高亮的WEB编辑器来做规则配置.代码编辑等,此时ACE应该是一个不错的选择,简单的用法如下: <!DOCTYPE html> <html lan ...
- vue-cli 配置路由之间跳转传递参数
1.有2种方式去传参,如下代码: <template> <div> <div>这里是首页</div> <router-link :to=" ...
- 一起talk GDB吧(第五回:GDB查看信息)
各位看官们.大家好,上一回中我们说的是GDB的调用栈调试功能,而且说了怎样使用GDB进行查看调用 栈.这一回中,我们继续介绍GDB的调试功能:查看信息.当然了.我们也会介绍怎样使用GDB查看程序 执行 ...
- PHP-时间小结
//获得本周(本天)时间戳的起始和结束//本周星期一时间戳$monday = mktime(0, 0, 0, date("m",strtotime("last Monda ...
- activemq持久化配置,设置为主从模式(带复制的主从模式,应用mysql数据库)
配置文件如下<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor l ...
- Node.js 向一个文件添加内容
最简方案: fs.appendFile('message.txt', 'data to append', function (err) { }); 参考文档: http://www.codeweblo ...
- [莫队算法 线段树 斐波那契 暴力] Codeforces 633H Fibonacci-ish II
题目大意:给出一个长度为n的数列a. 对于一个询问lj和rj.将a[lj]到a[rj]从小到大排序后并去重.设得到的新数列为b,长度为k,求F1*b1+F2*b2+F3*b3+...+Fk*bk.当中 ...
- 如何使用angularjs实现ajax异步请求
Sample.html <!DOCTYPE html> <html ng-app="myApp"> <head> <title>fo ...
- vc 获取函数名称真实地址
首先写一个很简单的main函数: int main(){ printf("main的地址(?):%08x",main); } 单步调试,可得知 main函数的真实入口地址是:00b ...