• Stars
    star
    144
  • Rank 246,389 (Top 6 %)
  • Language
    Lua
  • Created almost 15 years ago
  • Updated over 13 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Lean & mean Tokyo Cabinet recipes (with Lua)

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!

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

More Repositories

1

videospeed

HTML5 video speed controller (for Google Chrome)
JavaScript
3,654
star
2

ga-beacon

Google Analytics collector-as-a-service (using GA measurement protocol).
Go
3,527
star
3

gharchive.org

GH Archive is a project to record the public GitHub timeline, archive it, and make it easily accessible for further analysis.
Ruby
2,567
star
4

em-websocket

EventMachine based WebSocket server
Ruby
1,690
star
5

decisiontree

ID3-based implementation of the ML Decision Tree algorithm
Ruby
1,414
star
6

em-http-request

Asynchronous HTTP Client (EventMachine + Ruby)
Ruby
1,216
star
7

em-synchrony

Fiber aware EventMachine clients and convenience classes
Ruby
1,040
star
8

http-2

Pure Ruby implementation of HTTP/2 protocol
Ruby
876
star
9

bugspots

Implementation of simple bug prediction hotspot heuristic
Ruby
841
star
10

agent

Agent is an attempt at modelling Go-like concurrency, in Ruby
Ruby
729
star
11

em-proxy

EventMachine Proxy DSL for writing high-performance transparent / intercepting proxies in Ruby
Ruby
664
star
12

vimgolf

Real Vim ninjas count every keystroke - do you?
Ruby
632
star
13

node-spdyproxy

SPDY forwarding proxy - fast and secure
JavaScript
528
star
14

bloomfilter-rb

BloomFilter(s) in Ruby: Native counting filter + Redis counting/non-counting filters
C
468
star
15

async-rails

async Rails 3 stack demo
Ruby
467
star
16

hackernews-button

Embeddable Hacker News button + vote counter for your site
Go
417
star
17

istlsfastyet.com

Is TLS fast yet? Yes, yes it is.
HTML
417
star
18

http-client-hints

Ruby
401
star
19

spdy

SPDY is a protocol designed to reduce latency of web pages
Ruby
317
star
20

hpbn.co

High Performance Browser Networking (O'Reilly)
HTML
286
star
21

webp-detect

WebP with Accept negotiation
C++
242
star
22

zeroconf-router

Zero-config reverse proxies: let's get there!
Ruby
205
star
23

autoperf

Ruby driver for httperf - automated load and performance testing
Ruby
179
star
24

PubSubHubbub

Asynchronous PubSubHubbub Ruby Client
Ruby
174
star
25

heroku-buildpack-dart

Heroku buildpack for Dart
Shell
166
star
26

rack-speedtracer

SpeedTracer middleware for server side debugging
Ruby
156
star
27

textquery

Evaluate any text against a collection of match rules
Ruby
145
star
28

slowgrowl

Surface slow code paths in your Rails 3 app via Growl
Ruby
117
star
29

mneme

Mneme is an HTTP web-service for recording and identifying previously seen records - aka, duplicate detection.
Ruby
108
star
30

RRRDTool

Round robin database pattern via Redis sorted sets
Ruby
79
star
31

pregel

Single-node implementation of Google's Pregel framework for graph processing.
Ruby
72
star
32

gmetric

Pure Ruby interface for generating Ganglia gmetric packets
Ruby
70
star
33

rack-aggregate

Rack response-time statistics aggregator middleware
Ruby
67
star
34

em-jack

An Evented Beanstalk Client
Ruby
65
star
35

rb-pagerank

Code from RailsConf '09 pres: Building Mini Google in Ruby
Ruby
54
star
36

closure-sprockets

Sprockets processor for Google's Closure tools
Python
54
star
37

netinfo-monitor

Displays network quality as reported by Network Information API.
JavaScript
48
star
38

shopify-core-web-vitals

This embedded app provides a report on how real-world Google Chrome users experience the Shopify-powered storefront, as captured by the Chrome UX Report, and enables the site owner to benchmark their site against a custom list of competitors.
Ruby
48
star
39

libsnappy

Snappy, a fast compressor/decompressor (courtesy of Google)
Ruby
45
star
40

hydra5

Load-balanced (multi-headed) SOCKS5 proxy
Ruby
42
star
41

zdevice

ZDevice is a Ruby DSL for assembling ZeroMQ routing devices, with support for the ZDCF configuration syntax
Ruby
42
star
42

ruby2lolz

Ruby to Lolcode translator, kthnxbai.
Ruby
38
star
43

bmr-wordcount

Browser Map-Reduce: distributed word count example
Ruby
33
star
44

em-socksify

Transparent proxy support for any EventMachine protocol
Ruby
32
star
45

resource-hints

Moved to...
JavaScript
32
star
46

gitter

XML history generator for CodeSwarm
31
star
47

em-handlersocket

EventMachine HandlerSocket MySQL plugin for direct read/write of InnoDB tables
Ruby
29
star
48

canicrawl

Hosted robots.txt permissions verifier
Go
23
star
49

udacity-webperf

JavaScript
17
star
50

omnipipe

web pipes for your browser's omnibar!
Ruby
12
star
51

issue-tracker

W3C webperf issue tracker
JavaScript
11
star
52

contextual

runtime contextual HTML autoescaper
Ruby
10
star
53

presentations

Slides, notes, code examples from some of the bigger conferences & talks.
9
star
54

performance-observer

JavaScript
7
star
55

libgeohash

Ruby FFI wrapper for libgeohash
Ruby
7
star
56

ImageQuote

Convert text quotes to images
Ruby
7
star
57

resourcehints.info

HTML
2
star
58

igrigorik

1
star