阅读更多

20顶
0踩

开源软件
tstdb是一种基于日志重放机制、与memcached兼容的key-value数据库,可用于需要缓存数据落地的一些场合。

它兼容memcached的客户端(支持get、set和delete命令),支持value过期设置。读写性能与memcached接近。日志重放速度很快,作者测试时一亿数据的reloading(key:10bytes ,value: 20 bytes)只需要2分钟,内存占用2.1G。

这个新版本的主要改进包括:

1. 加入了prefix search和range query的支持
2. 更好的兼容memcached,加入了incr/derc/gets/cas操作
3. 改进了服务器的buffer管理,更加稳定
4. 改进了数据持久化机制,除了日志重放外还加上了磁盘镜像reload功能,使得服务重启时数据加载更快
5. 支持pipeline请求,支持noreply的异步set操作

目前,您可以使用任意的memcached客户端来访问tstdb。如果您需要使用prefix search等功能的话,目前只有一个python客户端pytst可用。不过,很容易扩展到其他语言。

安装说明:http://code.google.com/p/tstdb/wiki/TSTDBV2

Usage demo

import pytst
tst = pytst.TSTClient(host='localhost',port=8402)

tst.set("some_key", "Some value")
value = tst.get("some_key")
print value

tst.set("another_key", 3)
tst.delete("another_key")

tst.set("key", "1") 
tst.incr("key")
tst.decr("key")

tst.set('haha/1',123)
tst.set('haha/2',456)
tst.set('haha/5','xyz')
print tst.prefix('haha')
print tst.less('haha/2')
print tst.greater('haha/2')

output will be

Some value
['haha/1', 'haha/2', 'haha/5']
['haha/2', 'haha/1']
['haha/2', 'haha/5', 'key', 'some_key']
来自: Google Code
20
0
评论 共 27 条 请登录后发表评论
27 楼 fxsjy 2012-03-07 12:41
sky_dream 写道
javamonkey 写道
sky_dream 写道
有些人老是喜欢用国产什么的,其实你的组件做的好的话,大家都会去使用的,你使用的是自己开发的国产语言开发的?


21楼为啥感觉国产刺眼呢?


  我没别的意思,只是现在市面上冒充国产的东西太多了,我希望以技术让大家认可,而不是贴上国产的商标。


“国产”只是阐述一个事实,就跟"Made in China"的作用一样。而且,这是开源软件,所有的代码都是开放的,因此真的没有冒充和误导的必要。
26 楼 sky_dream 2012-03-07 10:24
javamonkey 写道
sky_dream 写道
有些人老是喜欢用国产什么的,其实你的组件做的好的话,大家都会去使用的,你使用的是自己开发的国产语言开发的?


21楼为啥感觉国产刺眼呢?


  我没别的意思,只是现在市面上冒充国产的东西太多了,我希望以技术让大家认可,而不是贴上国产的商标。
25 楼 jansel 2012-03-06 17:10
第一感觉:testDB,实话实说啊,表拍
24 楼 nakupanda 2012-03-06 15:37
shuaiji 写道
mathgl 写道
fxsjy 写道
mathgl 写道
great....Does it work on Linux only?

Yes, until now, Linux only, because tstdb's server is based on epoll.


thx,,, I will give it a try...keep going..

All of you think your english are very good?


Do I have to have a good english before I post this?
23 楼 javamonkey 2012-03-06 14:28
sky_dream 写道
有些人老是喜欢用国产什么的,其实你的组件做的好的话,大家都会去使用的,你使用的是自己开发的国产语言开发的?


21楼为啥感觉国产刺眼呢?
22 楼 hao117 2012-03-06 14:13
技术没国界,人有国界,冠个国产的那是很好的啊,21楼不要打击人,这种要多多支持,哪怕再怎么不好,只要有心做好就好!
21 楼 sky_dream 2012-03-06 13:06
有些人老是喜欢用国产什么的,其实你的组件做的好的话,大家都会去使用的,你使用的是自己开发的国产语言开发的?
20 楼 shuaiji 2012-03-06 10:50
mathgl 写道
fxsjy 写道
mathgl 写道
great....Does it work on Linux only?

Yes, until now, Linux only, because tstdb's server is based on epoll.


thx,,, I will give it a try...keep going..

All of you think your english are very good?
19 楼 mathgl 2012-03-06 10:45
fxsjy 写道
mathgl 写道
great....Does it work on Linux only?

Yes, until now, Linux only, because tstdb's server is based on epoll.


thx,,, I will give it a try...keep going..
18 楼 fxsjy 2012-03-05 21:37
mathgl 写道
great....Does it work on Linux only?

Yes, until now, Linux only, because tstdb's server is based on epoll.
17 楼 lvjinhua 2012-03-05 18:33
不错不错,是一个值得关注的项目
16 楼 mathgl 2012-03-05 18:27
great....Does it work on Linux only?
15 楼 simen_net 2012-03-05 18:08
zhb31415926 写道
又见马甲,哈哈

zhb31415926 写道
1 楼姓王吧

麻烦看清我的回复先,不是什么回复都是马甲的
14 楼 simen_net 2012-03-05 18:07
回复2楼3楼,我有必要当马甲吗?麻烦看清我写的什么先

13 楼 252831020 2012-03-05 16:49
http://www.iteye.com/news/24422-tstdb_v2?news_comment[body]=losfljsadlfjlsadjf
12 楼 tommet 2012-03-05 15:13
最近在用mongo
11 楼 fxsjy 2012-03-05 15:04
laibin1320 写道
与redis相比,怎样?

redis是神器,是tstdb赶超的对象。不过,如果你想实现“自动完成”或者“英语词典”这样的效果话,用tstdb显然更合适。
10 楼 fxsjy 2012-03-05 15:02
kimmking 写道
看起来跟treapDB 很像啊

TreapDB也是我开发的,是Java写的,tstdb是C语言写的,主要在内存管理上有优势,其次,采用了三元搜索树数据结构,对于不同key的相同前缀可以压缩存储。

9 楼 kimmking 2012-03-05 14:40
看起来跟treapDB 很像啊
8 楼 w3kiccp 2012-03-05 13:22
有取个好点的名字不?不好记啊!

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 武希松大牛的dll Hook单元,delphi源代码加demo

    delphi-hook-library, wr960204武稀松.2012.2 主页 http://www.raysoftware.cn 通用Hook库. 支持X86和X64. Get 使用了开源的BeaEngine反汇编引擎.BeaEngine的好处是可以用BCB编译成OMF格式的Obj, 被链接进Delphi的DCU和目标文件中.不需要额外带DLL. BeaEngin引擎 http://www.beaengine.org/ 限制: 1.不能Hook代码大小小于5个字节的函数. 2.不能Hook前五个字节中有跳转指令的函数. 希望使用的朋友们自己也具有一定的汇编或者逆向知识. Hook函数前请确定该函数不属于上面两种情况. 另外钩COM对象有一个技巧,如果你想在最早时机勾住某个COM对象, 可以在你要钩的COM对象创建前自己先创建一个该对象,Hook住,然后释放你自己的对象. 这样这个函数已经被下钩子了,而且是钩在这个COM对象创建前的.

  • delphi下实现控制其它窗体中的控件[转]

    ====================================================== 注:本文源代码点此下载 ====================================================== 首先申明:我是菜鸟,我只不过想把困绕了我很长时间的问题的解决方案发表出来,免得以后我又忘记,同时给还不知道这些小知识的同僚一些帮助。各位不要笑我的

  • delphi 文件操作(信息获取)

    delphi获取Exe文件版本信息的函数 Type TFileVersionInfo = Record FixedInfo:TVSFixedFileInfo; {版本信息} CompanyName:String; {公司名称} FileDescription:String; {说明} FileVersion:String; {文件版本} InternalName...

  • Delphi中的消息钩子函数和Windows子类处理 入门篇

    google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//<script type="text/javascript"

  • 易语言 窗口消息 键盘消息 鼠标消息 控件消息等 整理归类

    // 键盘消息 WM_CHAR WM_CHARTOITEM WM_DEADCHAR WM_GETHOTKEY WM_HOTKEY WM_KEYDOWN WM_KEYUP WM_SETHOTKEY WM_SYSCHAR WM_SYSDEADCHAR WM_SYSKEYDOWN WM_SYSKEYUP WM_UNICHAR WM_VKEYTOITEM // 鼠标消息 0015. WM_DROPFILES 0016. WM_LBUTTONDBLCLK 0017. WM_LBUTTONDOWN 0018. WM

  • delphi问题集锦(27问)

    delphi问题集锦(27问) 1、怎么样在delphi中调动其它*.exe文件? 例如:winexec(''d:\郑洽\Project1.exe'',sw_show); ============================================================================== 2、如何让工程运行时主窗体就是最大化的? 答:设置主窗体的Window...

  • Win32汇编系列七、窗口程序原理及实现

    前言 学c语言的人天天面对黑框框,有木有?不知道是否想用c写一个窗口程序?我想应该也很希望吧,目前我见过的书中很少有介绍窗口程序设计,如果想写的话,还需要去网上、b站搜索,使用c写窗口程序其实挺麻烦的,需要了解Windows消息机制、GDI或者GDI+、还有各种控件,如Button,另外自带的控件都太难看,需要使用GDI或GDI+自己绘制,这样工作量又大了很多,所以现在很少有rj这种最"底层"的方式实现了就需要我不曾在c中大量写过, ...

  • MFC(一)

    初识WIN32MFC是一种开发框架,将C语言实现的WIN32中的上千个API集成为几百个类。先接触几个名词: 1. 句柄:系统在创建资源的时候会为它们分配内存,并返回资源的标识号即句柄(HANDLE)。 2. 消息与消息队列: 操作系统------①----》消息队列---②----》应用程序 ↓ ↑ ↓

  • 一种hook --- SetWindowLong函数修改窗口处理过程

    LONG OldWndProc = 0; LRESULT CALLBACK WindowProc2( HWND hwnd, // handle to window UINT uMsg, // message identifier WPARAM wParam, // first message parameter LPARAM lPa

  • 用Delphi实现Windows的鼠标钩子函数

    用Delphi实现Windows的鼠标钩子函数     Delphi是基于PASCAL语言的Windows编程工具,功能十分强大。然而在Delphi的帮助 文件中,对Windows API函数的说明沿袭了 VC 的格式,和VC一样,对很多API函数的用法 没有举例子详细说明,对一些深入系统内部的API函数更是语焉不详,给编程者带来不便。 笔者仅就在Windows编程中鼠标钩子函数(HO

  • 易语言 组件消息参数详解

    点击阅读原文将指定信息发送到窗口或窗口组件,并等待且取回信息反馈值。语法: 整数型 窗口组件.发送信息 (信息值,参数1,参数2)将指定信息发送到窗口或窗口组件,不等待直接返回。语法: 无返回值 窗口组件.投递信息 (信息值,参数1,参数2)========================================1.移动控件控件.发送信息 (274, 61458, 0)控件.发送信息 (1...

  • 易语言WM_COPYDATA消息通信源码-易语言

    易语言WM_COPYDATA消息通信源码

  • WM_IME_COMPOSITION各项值的含义

      当用户改变了编码状态时,发送此消息WM_IME_COMPOSITION  应用程序可以通过调用ImmGetCompositionString获取新的编码状态。  wChar=   wParam;       最后输入到编码窗口的2字节的DBCS字符  lAttribute=   lParam;  当前编码的含义。  lAttribute可取下列值得组合:  值     

  • 键盘钩子获取USB扫描枪扫描数据

    避免扫描条码之前让控件获得焦点,利用键盘钩子监听键盘事件,从而轻松获取扫描枪扫描到的数据

  • 窗口最小化消息的解决之道

    最近在弄程序的时候,碰到需要在主窗口最小化的时候,自动将其子窗口最小化的问题。当时没想通。不过现在明白了,其实就是在窗口大小变化的事件里判断主窗口是否最小化的。然后进行相应的操作即可。如果是在SDK程序, 或者VC中可能用不着这样麻烦了,直接在消息循环中进行相应的操作即可。呵呵,其它的语言,就用这方法吧。。。下面是网上的一些资料:我们首先要知道窗口什么时候最小化。但是窗口消息中并没有最小...

  • Windows消息大全易语言版转换程序源码

    Windows消息大全易语言版,。消息,就是指Windows发出的一个通知,告诉应用程序某个事情发生了。例如,单击鼠标、改变窗口尺寸、按下键盘上的一个键都会使Windows发送一个消息给应用程序。消息本身是作为一个记录传递给应用程序的,这个记录中包含了消息的类型以及其他信息。例如,对于单击鼠标所产生的消息来说,这个记录中包含了单击鼠标时的坐标。这个记录类型叫做TMsg, 。它在Windows单元中是这样声明的: 。type 。TMsg = packed record 。hwnd: HWND; / /窗口句柄 。message: UINT; / /消息常量标识符 。wParam: WPARAM ; // 32位消息的特定附加信息 。lParam: LPARAM ; // 32位消息的特定附加信息 。time: DWORD; / /消息创建时的时间 。pt: TPoint; / /消息创建时的鼠标位置 。end; 。消息中有什么? 。是否觉得一个消息记录中的信息像希腊语一样?如果是这样,那么看一看下面的解释: 。hwnd 32位的窗口句柄。窗口可以是任何类型的屏幕对象,因为Win32能够维

  • windows 消息大全 与 虚拟键列表 HOOK专题

    windows消息大全消息,就是指Windows发出的一个通知,告诉应用程序某个事情发生了。例如,单击鼠标、改变窗口尺寸、按下键盘上的一个键都会使Windows发送一个消息给应用程序。消息本身是作为一个记录传递给应用程序的,这个记录中包含了消息的类型以及其他信息。例如,对于单击鼠标所产生的消息来说,这个记录中包含了单击鼠标时的坐标。这个记录类型叫做TMsg, 它在Windows单元中是这样声明

  • 易语言数字指令编程大全(发送信息代码数据集合)

    1.控件选中并鼠标显示四向箭头: 控件.发送信息(274,61440,0) 控件.发送信息(274,61450,0) 控件最大化: 控件.发送信息(274,61488,0) 参数2在61488-61503都有效 移动控件: 控件.发送信息(274,61449,0) 2.调整控件尺寸 调整左边: 控件.发送信息(274,61441,0) 调整右边: 控件.发送信息(274,6...

Global site tag (gtag.js) - Google Analytics