File: tctdbex.rb

package info (click to toggle)
ruby-tokyocabinet 1.31-7
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,760 kB
  • sloc: ruby: 3,594; ansic: 3,387; sh: 29; makefile: 3
file content (51 lines) | stat: -rw-r--r-- 1,261 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
require 'tokyocabinet'
include TokyoCabinet

# create the object
tdb = TDB::new

# open the database
if !tdb.open("casket.tct", TDB::OWRITER | TDB::OCREAT)
  ecode = tdb.ecode
  STDERR.printf("open error: %s\n", tdb.errmsg(ecode))
end

# store a record
pkey = tdb.genuid
cols = { "name" => "mikio", "age" => "30", "lang" => "ja,en,c" }
if !tdb.put(pkey, cols)
  ecode = tdb.ecode
  STDERR.printf("get error: %s\n", tdb.errmsg(ecode))
end

# store another record
cols = { "name" => "falcon", "age" => "31", "lang" => "ja", "skill" => "cook,blog" }
if !tdb.put("x12345", cols)
  ecode = tdb.ecode
  STDERR.printf("get error: %s\n", tdb.errmsg(ecode))
end

# search for records
qry = TDBQRY::new(tdb)
qry.addcond("age", TDBQRY::QCNUMGE, "20")
qry.addcond("lang", TDBQRY::QCSTROR, "ja,en")
qry.setorder("name", TDBQRY::QOSTRASC)
qry.setlimit(10)
res = qry.search
res.each do |rkey|
  rcols = tdb.get(rkey)
  printf("name:%s\n", rcols["name"])
end

# hash-like usage
tdb["joker"] = { "name" => "ozma", "lang" => "en", "skill" => "song,dance" }
printf("%s\n", tdb["joker"]["name"])
tdb.each do |key, value|
  printf("%s:%s\n", key, value["name"])
end

# close the database
if !tdb.close
  ecode = tdb.ecode
  STDERR.printf("close error: %s\n", tdb.errmsg(ecode))
end