Every repository with this icon (
Every repository with this icon (
| name | age | message | |
|---|---|---|---|
| |
README.rdoc | Thu Nov 26 15:16:46 -0800 2009 | |
| |
dynamic-extension/ | Thu Jul 30 21:15:34 -0700 2009 | |
| |
echo-command/ | Fri Jul 10 14:03:18 -0700 2009 | |
| |
expire/ | Tue Jul 07 21:58:33 -0700 2009 | |
| |
high-low-game/ | Tue Jul 07 16:25:29 -0700 2009 | |
| |
increment-command/ | Mon Jul 06 21:00:24 -0700 2009 | |
| |
inverted-index/ | Tue Jul 07 21:20:17 -0700 2009 | |
| |
map-reduce/ | Wed Jul 08 22:09:26 -0700 2009 | |
| |
session-trail/ | Tue Jul 07 16:25:29 -0700 2009 | |
| |
sets/ | Tue Jul 07 21:48:25 -0700 2009 |
Video of FutureRuby talk ("Lean & Mean Tokyo Cabinet Recipes") on InfoQ:
Tokyo Cabinet is a library of routines for managing a database. The database is a simple data file containing records, each is a pair of a key and a value. Every key and value is serial bytes with variable length. Both binary data and character string can be used as a key and a value. There is neither concept of data tables nor data types. Records are organized in hash table, B+ tree, or fixed-length array.
User Defined Functions (UDF’s) via Lua
As of mid ‘08, Hirabayashi-san embedded Lua into Tokyo Cabinet’s runtime to allow for easy extensibility of the database. There is a common set of Lua API’s built in, which allow you to interact with the underlying data, execute your extensions remotely, or even on a timer. This allows us to build additional functionality on top of the Tokyo Cabinet database with Lua!
A few examples you will find in this repository:
- Simple echo application
- Implemention of sets operations (like Redis) on top of TC
- Example of executing Map-Reduce jobs on data within TC
- TTL / Expire functionality (like memcached)
- and many others…
Please do fork the repo and add your recipes to the list!
- Lua API: tokyocabinet.sourceforge.net/tyrantdoc/#luaext
- Announcement blog post: alpha.mixi.co.jp/blog/?p=236
Installing Tokyo Cabinet with Lua
yum install lua lua-devel git clone git://github.com/etrepum/tokyo-cabinet.git git clone git://github.com/etrepum/tokyo-tyrant.git (or get latest files from sourceforge: http://sourceforge.net/projects/tokyocabinet/files/) cd tokyo-cabinet ./configure make && make install cd tokyo-tyrant ./configure --enable-lua make && make install gem install rufus-tokyo
Source: openwferu.rubyforge.org/tokyo.html
Invoking Lua extensions via the HTTP interface
It is possible to invoke custom Lua functions via direct HTTP calls. For example, using the echo-command example, we can invoke the function via:
$ curl -i -X POST -H “X-TT-XNAME: echo” http://localhost:1978/foo -d “bar” HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 7 foo:bar







