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 ...
随机推荐
- centos下防火墙iptables日志学习笔记
一直找不到日志方面怎么弄,问了同事,同事给了个网址: http://www.thegeekstuff.com/2012/08/iptables-log-packets/ 下面就是我根据这个网址里面的设 ...
- TStringList的DelimitedText的空格问题
TStringList的DelimitedText的空格问题 如果DelimitedText的字符串中有空格,TStringList遇到空格会进行自动换行,而这显然不是我们想要的结果.经测试发现D7~ ...
- 从Cell的视图推出一个新的界面
先写一个方法, 强制增加一个navigation的属性. 这样self就可以调出来navigation了 - (UINavigationController*)naviController { for ...
- maven的几个重要配置文件pom.xml、settings.xml;Maven打包生成包含所有依赖的jar包
一个java项目通过maven自动下载依赖时,会涉级读取三个配置文件,分别是项目下的pom.xml 文件 .用户家目录下的.m2/settings.xml 与 maven 全局配置settings.x ...
- BrowserSync-多浏览器测试工具
阅读目录 自动刷新 介绍BrowserSync BrowserSync具体使用 BrowserSync配合gulp 自动刷新 自动刷新,顾名思义,就是不用我们去F5刷新.假设有一天我们写代码,只需要c ...
- AWR报告简易分析
Snap Id Snap Time Sessions Cursors/Session Begin Snap: 35669 2012-11-8 13:00 1246 11.3 End Snap: 356 ...
- pymongo常见的高级用法
pymongo是python中基于mongodb数据库开发出来的,比mongoengine要高级一些,也要好用一些. 基本的增删查改就不说了 insert() delete() find() upda ...
- Java自定义注解基础知识
注解分为三类:没有任何元素的注解,有一个元素的注解和有多个元素的注解. 1. Marker注解 这类注解没有任何元素,此类注解仅仅是一个标示.如下所示: public @interface Good ...
- ES集群Master节点配置问题
ES集群的主节点发现机制采用单播形式,主要配置有三行,如下: discovery.zen.minimum_master_nodes: discovery.zen.ping.multicast.enab ...
- JList的基本操作
1.初始化并添加元素DefaultListModel leftListModel=new DefaultListModel();String[] items = Model.getPairs();fo ...