<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>brool &#187; tokyo cabinet</title>
	<atom:link href="http://www.brool.com/index.php/tag/tokyo-cabinet/feed" rel="self" type="application/rss+xml" />
	<link>http://www.brool.com</link>
	<description>brool \brool\ (n.) : a low roar; a deep murmur or humming</description>
	<lastBuildDate>Fri, 20 Jan 2012 07:58:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Tokyo Cabinet API for Clojure</title>
		<link>http://www.brool.com/index.php/tokyo-cabinet-api-for-clojure</link>
		<comments>http://www.brool.com/index.php/tokyo-cabinet-api-for-clojure#comments</comments>
		<pubDate>Fri, 07 Aug 2009 01:51:56 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[clojure]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[kvstore]]></category>
		<category><![CDATA[nonsql]]></category>
		<category><![CDATA[tokyo cabinet]]></category>

		<guid isPermaLink="false">http://www.brool.com/?p=333</guid>
		<description><![CDATA[I&#8217;ve been playing with Tokyo Cabinet and Clojure for a bit, and while I will go on about both of them in another blog post (or not), I have to mention that Clojure is such a well designed language that it&#8217;s a pleasure to play with. It has much of the same intrinsic power as [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been playing with Tokyo Cabinet and Clojure for a bit, and while I will go on about both of them in another blog post (or not), I have to mention that Clojure is such a well designed language that it&#8217;s a pleasure to play with.  It has much of the same intrinsic power as Haskell, but in a fashion that might be more approachable for people coming from Python or Ruby.</p>

<p>At any rate, I made a small, thin layer around the Tokyo Cabinet API, and <a href="http://github.com/brool/tokyo-cabinet/tree/master">put it on Github</a>.  Another thin wrapper can be found <a href="http://justin.harmonize.fm/index.php/tag/tokyo-cabinet/">at this blog</a>.</p>

<p>Copy of the README is below (the ultimate in lazy!).</p>

<h3>Introduction</h3>

<p>This is a simple interface to the Tokyo Cabinet libraries.  Tokyo Cabinet is a very cool, very high performing key-value store.  This library supports table mode, which essentially means that arbitrary hashmaps can be stored in the cabinet.</p>

<p>Note that this is appropriate for local storage only &#8212; if you&#8217;re looking to share a Tokyo Cabinet to multiple computers, you actually want Tokyo Tyrant.</p>

<h3>Basic Usage</h3>

<p>The with-cabinet call creates/opens a cabinet and allows the use of the various access routines within the scope of the call.  For example, here&#8217;s how to create a cabinet with three entries.</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="clojure"><pre class="de1"><span class="br0">&#40;</span><span class="kw1">ns</span> user <span class="br0">&#40;</span>:<span class="me1">use</span> tokyo<span class="sy0">-</span>cabinet<span class="br0">&#41;</span><span class="br0">&#41;</span>  <span class="co1">;; bring into our namespace</span>
&nbsp;
<span class="br0">&#40;</span>with<span class="sy0">-</span>cabinet <span class="br0">&#123;</span> :<span class="me1">filename</span> <span class="st0">&quot;test.tokyo&quot;</span> :<span class="me1">mode</span> <span class="br0">&#40;</span><span class="sy0">+</span> OWRITER OCREAT<span class="br0">&#41;</span> <span class="br0">&#125;</span> 
    <span class="br0">&#40;</span><span class="kw1">doseq</span> <span class="br0">&#91;</span><span class="br0">&#91;</span>name val<span class="br0">&#93;</span> <span class="br0">&#91;</span><span class="br0">&#91;</span><span class="st0">&quot;1&quot;</span> <span class="st0">&quot;one&quot;</span><span class="br0">&#93;</span> <span class="br0">&#91;</span><span class="st0">&quot;2&quot;</span> <span class="st0">&quot;two&quot;</span><span class="br0">&#93;</span> <span class="br0">&#91;</span><span class="st0">&quot;3&quot;</span> <span class="st0">&quot;three&quot;</span><span class="br0">&#93;</span><span class="br0">&#93;</span><span class="br0">&#93;</span>
        <span class="br0">&#40;</span>put<span class="sy0">-</span>value name val<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></pre></div></div></div></div></div></div></div>




<p>This creates a Tokyo Cabinet <i>hash table</i>, which allows one value per key.  Now query an entry:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="clojure"><pre class="de1"><span class="br0">&#40;</span>with<span class="sy0">-</span>cabinet <span class="br0">&#123;</span> :<span class="me1">filename</span> <span class="st0">&quot;test.tokyo&quot;</span> :<span class="me1">mode</span> OREADER <span class="br0">&#125;</span> 
    <span class="br0">&#40;</span>get<span class="sy0">-</span>value <span class="st0">&quot;1&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
<span class="st0">&quot;one&quot;</span></pre></div></div></div></div></div></div></div>




<h3>Tables</h3>

<p>A <i>table</i> in Tokyo Cabinet can be used to store arbitrary hash maps.  For example:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="clojure"><pre class="de1"><span class="br0">&#40;</span><span class="kw1">def</span> params <span class="br0">&#123;</span> :<span class="me1">filename</span> <span class="st0">&quot;test-table.tokyo&quot;</span> :<span class="me1">mode</span> <span class="br0">&#40;</span><span class="sy0">+</span> OWRITER OCREAT<span class="br0">&#41;</span> :<span class="me1">type</span> :<span class="me1">table</span> <span class="br0">&#125;</span> <span class="br0">&#41;</span>
<span class="br0">&#40;</span>with<span class="sy0">-</span>cabinet params
    <span class="br0">&#40;</span>put<span class="sy0">-</span>value nil <span class="br0">&#123;</span> :<span class="me1">name</span> <span class="st0">&quot;John Doe&quot;</span> :<span class="me1">hobbies</span> <span class="st0">&quot;rowing fishing skiing&quot;</span> :<span class="me1">age</span> <span class="nu0">28</span> :<span class="me1">gender</span> <span class="st0">&quot;M&quot;</span> <span class="br0">&#125;</span><span class="br0">&#41;</span>
    <span class="br0">&#40;</span>put<span class="sy0">-</span>value nil <span class="br0">&#123;</span> :<span class="me1">name</span> <span class="st0">&quot;Melissa Swift&quot;</span> :<span class="me1">hobbies</span> <span class="st0">&quot;soccer tennis books&quot;</span> :<span class="me1">age</span> <span class="nu0">33</span> :<span class="me1">gender</span> <span class="st0">&quot;F&quot;</span><span class="br0">&#125;</span><span class="br0">&#41;</span>
    <span class="br0">&#40;</span>put<span class="sy0">-</span>value nil <span class="br0">&#123;</span> :<span class="me1">name</span> <span class="st0">&quot;Tom Swift&quot;</span> :<span class="me1">hobbies</span> <span class="st0">&quot;inventing exploring&quot;</span> :<span class="me1">gender</span> <span class="st0">&quot;M&quot;</span> <span class="br0">&#125;</span><span class="br0">&#41;</span>
    <span class="br0">&#40;</span>put<span class="sy0">-</span>value nil <span class="br0">&#123;</span> :<span class="me1">name</span> <span class="st0">&quot;Harry Potter&quot;</span> :<span class="me1">hobbies</span> <span class="st0">&quot;magic quidditch flying&quot;</span> :<span class="me1">gender</span> <span class="st0">&quot;M&quot;</span> :<span class="me1">age</span> <span class="nu0">9</span> <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></pre></div></div></div></div></div></div></div>




<h3>Queries</h3>

<p>Queries can be run, and you can use (hint) to take a look at how the query is being performed:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="clojure"><pre class="de1"><span class="co1">; show a hint and all rows matching</span>
<span class="br0">&#40;</span><span class="kw1">defn</span> showrows <span class="br0">&#91;</span>query<span class="br0">&#93;</span>
    <span class="br0">&#40;</span><span class="kw1">let</span> <span class="br0">&#91;</span>showhint <span class="br0">&#40;</span>atom false<span class="br0">&#41;</span><span class="br0">&#93;</span> 
        <span class="br0">&#40;</span>with<span class="sy0">-</span>query<span class="sy0">-</span>results row query
            <span class="br0">&#40;</span><span class="kw1">when</span> <span class="br0">&#40;</span>compare<span class="sy0">-</span>and<span class="sy0">-</span><span class="kw1">set</span><span class="sy0">!</span> showhint false true<span class="br0">&#41;</span>
                  <span class="br0">&#40;</span>println <span class="st0">&quot;Query: &quot;</span> query<span class="br0">&#41;</span>
                  <span class="br0">&#40;</span>println <span class="st0">&quot;Hint: &quot;</span> <span class="br0">&#40;</span>hint<span class="br0">&#41;</span><span class="br0">&#41;</span>
                  <span class="br0">&#40;</span>println <span class="st0">&quot;Results:&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
            <span class="br0">&#40;</span>println row<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
        <span class="br0">&#40;</span>println<span class="br0">&#41;</span><span class="br0">&#41;</span>
&nbsp;
<span class="br0">&#40;</span>with<span class="sy0">-</span>cabinet params
    <span class="br0">&#40;</span>showrows <span class="br0">&#91;</span><span class="br0">&#91;</span>:<span class="me1">age</span> <span class="st0">&quot;&gt;=&quot;</span> <span class="nu0">30</span><span class="br0">&#93;</span><span class="br0">&#93;</span><span class="br0">&#41;</span>
    <span class="br0">&#40;</span>showrows <span class="br0">&#91;</span><span class="br0">&#91;</span>:<span class="me1">hobbies</span> <span class="st0">&quot;any-token&quot;</span> <span class="st0">&quot;soccer&quot;</span><span class="br0">&#93;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></pre></div></div></div></div></div></div></div>




<p>Leads to the following output:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="clojure"><pre class="de1">Query:  <span class="br0">&#91;</span><span class="br0">&#91;</span>:<span class="me1">age</span> <span class="sy0">&gt;=</span> <span class="nu0">30</span><span class="br0">&#93;</span><span class="br0">&#93;</span>
Hint:  <span class="me1">scanning</span> the whole table
result <span class="kw1">set</span> size: <span class="nu0">1</span>
leaving the natural order
&nbsp;
Results:
<span class="br0">&#123;</span>:<span class="me1">gender</span> F, :<span class="me1">hobbies</span> soccer tennis books, :<span class="me1">name</span> Melissa Swift, :<span class="me1">age</span> <span class="nu0">33</span><span class="br0">&#125;</span>
&nbsp;
Query:  <span class="br0">&#91;</span><span class="br0">&#91;</span>:<span class="me1">hobbies</span> any<span class="sy0">-</span>token soccer<span class="br0">&#93;</span><span class="br0">&#93;</span>
Hint:  <span class="me1">scanning</span> the whole table
result <span class="kw1">set</span> size: <span class="nu0">1</span>
leaving the natural order
&nbsp;
Results:
<span class="br0">&#123;</span>:<span class="me1">gender</span> F, :<span class="me1">hobbies</span> soccer tennis books, :<span class="me1">name</span> Melissa Swift, :<span class="me1">age</span> <span class="nu0">33</span><span class="br0">&#125;</span></pre></div></div></div></div></div></div></div>




<h3>Indexes</h3>

<p>Indexes can be added with create-index (and removed with delete-index), which help optimize particular queries.</p>

<p>The different index types:</p>

<ul>
<li>INDEX-DECIMAL</li>
<li>INDEX-LEXICAL</li>
<li>INDEX-QGRAM</li>
</ul>

<p>With some optional specifiers that can be added / ored in:</p>

<ul>
<li>INDEX-KEEP &#8212; keep the index if it already exists</li>
<li>INDEX-OPTIMIZE</li>
</ul>

<p>Running the queries again, with indexes:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="clojure"><pre class="de1"><span class="co1">; indexes are persistent</span>
<span class="br0">&#40;</span>with<span class="sy0">-</span>cabinet params
    <span class="br0">&#40;</span>create<span class="sy0">-</span>index :<span class="me1">hobbies</span> INDEX<span class="sy0">-</span>TOKEN<span class="br0">&#41;</span>
    <span class="br0">&#40;</span>create<span class="sy0">-</span>index :<span class="me1">age</span> INDEX<span class="sy0">-</span>DECIMAL<span class="br0">&#41;</span><span class="br0">&#41;</span>
&nbsp;
<span class="co1">; try the queries again with the indexes in place</span>
<span class="br0">&#40;</span>with<span class="sy0">-</span>cabinet params
    <span class="br0">&#40;</span>showrows <span class="br0">&#91;</span><span class="br0">&#91;</span>:<span class="me1">age</span> <span class="st0">&quot;&gt;=&quot;</span> <span class="nu0">30</span><span class="br0">&#93;</span><span class="br0">&#93;</span><span class="br0">&#41;</span>
    <span class="br0">&#40;</span>showrows <span class="br0">&#91;</span><span class="br0">&#91;</span>:<span class="me1">hobbies</span> <span class="st0">&quot;any-token&quot;</span> <span class="st0">&quot;soccer&quot;</span><span class="br0">&#93;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></pre></div></div></div></div></div></div></div>




<p>Gets the following hint:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="clojure"><pre class="de1">Query:  <span class="br0">&#91;</span><span class="br0">&#91;</span>:<span class="me1">age</span> <span class="sy0">&gt;=</span> <span class="nu0">30</span><span class="br0">&#93;</span><span class="br0">&#93;</span>
Hint:  <span class="me1">using</span> an index: <span class="st0">&quot;:age&quot;</span> asc <span class="br0">&#40;</span>NUMGT<span class="sy0">/</span>NUMGE<span class="br0">&#41;</span>
result <span class="kw1">set</span> size: <span class="nu0">1</span>
leaving the natural order
&nbsp;
Results:
<span class="br0">&#123;</span>:<span class="me1">gender</span> F, :<span class="me1">hobbies</span> soccer tennis books, :<span class="me1">name</span> Melissa Swift, :<span class="me1">age</span> <span class="nu0">33</span><span class="br0">&#125;</span>
&nbsp;
Query:  <span class="br0">&#91;</span><span class="br0">&#91;</span>:<span class="me1">hobbies</span> any<span class="sy0">-</span>token soccer<span class="br0">&#93;</span><span class="br0">&#93;</span>
Hint:  <span class="me1">using</span> an index: <span class="st0">&quot;:hobbies&quot;</span> inverted <span class="br0">&#40;</span>STROR<span class="br0">&#41;</span>
token occurrence: <span class="st0">&quot;soccer&quot;</span> <span class="nu0">1</span>
result <span class="kw1">set</span> size: <span class="nu0">1</span>
leaving the natural order
&nbsp;
Results:
<span class="br0">&#123;</span>:<span class="me1">gender</span> F, :<span class="me1">hobbies</span> soccer tennis books, :<span class="me1">name</span> Melissa Swift, :<span class="me1">age</span> <span class="nu0">33</span><span class="br0">&#125;</span></pre></div></div></div></div></div></div></div>




<h3>Optional Search Parameters</h3>

<p>You can further control what&#8217;s fetched by using a number of optional specifiers in the query:</p>

<ul>
<li>:limit nnn &#8212; limits the number of rows returned</li>
<li>:skip  nnn &#8212; skips the first nnn rows</li>
<li>:sort  fieldname &#8212; sorts by the given field</li>
<li>:order val &#8212; the specific ordering, one of SORT-NUM-ASC, SORT-NUM-DESC, SORT-TEXT-ASC, or SORT-TEXT-DESC</li>
</ul>

<p>For example:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="clojure"><pre class="de1"><span class="br0">&#40;</span>with<span class="sy0">-</span>cabinet params <span class="br0">&#40;</span>with<span class="sy0">-</span>query<span class="sy0">-</span>results row <span class="br0">&#91;</span><span class="br0">&#93;</span> <span class="br0">&#40;</span>println <span class="br0">&#40;</span>:<span class="me1">name</span> row<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>    
John Doe
Melissa Swift
Tom Swift
Harry Potter
&nbsp;
<span class="br0">&#40;</span>with<span class="sy0">-</span>cabinet params <span class="br0">&#40;</span>with<span class="sy0">-</span>query<span class="sy0">-</span>results row <span class="br0">&#91;</span><span class="br0">&#91;</span>:<span class="kw1">sort</span> :<span class="me1">name</span><span class="br0">&#93;</span><span class="br0">&#93;</span> <span class="br0">&#40;</span>println <span class="br0">&#40;</span>:<span class="me1">name</span> row<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
Harry Potter
John Doe
Melissa Swift
Tom Swift
&nbsp;
<span class="br0">&#40;</span>with<span class="sy0">-</span>cabinet params <span class="br0">&#40;</span>with<span class="sy0">-</span>query<span class="sy0">-</span>results row <span class="br0">&#91;</span><span class="br0">&#91;</span>:<span class="kw1">sort</span> :<span class="me1">name</span><span class="br0">&#93;</span> <span class="br0">&#91;</span>:<span class="me1">order</span> SORT<span class="sy0">-</span>TEXT<span class="sy0">-</span>DESC<span class="br0">&#93;</span><span class="br0">&#93;</span> <span class="br0">&#40;</span>println <span class="br0">&#40;</span>:<span class="me1">name</span> row<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
Tom Swift
Melissa Swift
John Doe
Harry Potter
&nbsp;
<span class="br0">&#40;</span>with<span class="sy0">-</span>cabinet params <span class="br0">&#40;</span>with<span class="sy0">-</span>query<span class="sy0">-</span>results row <span class="br0">&#91;</span><span class="br0">&#91;</span>:<span class="kw1">sort</span> :<span class="me1">name</span><span class="br0">&#93;</span> <span class="br0">&#91;</span>:<span class="me1">order</span> SORT<span class="sy0">-</span>TEXT<span class="sy0">-</span>DESC<span class="br0">&#93;</span> <span class="br0">&#91;</span>:<span class="me1">limit</span> <span class="nu0">1</span><span class="br0">&#93;</span><span class="br0">&#93;</span> <span class="br0">&#40;</span>println <span class="br0">&#40;</span>:<span class="me1">name</span> row<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
Tom Swift</pre></div></div></div></div></div></div></div>




<h3>Lower Level</h3>

<p>Depending on your application, it might not be convenient to have to bracket everything with with-cabinet, since that means an open and close of the cabinet.  You can also use the lower level open-cabinet and close-cabinet calls, along with the &#8220;with&#8221; statement.  This is also an easier way to use it at the command line.  For example:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="clojure"><pre class="de1"><span class="br0">&#40;</span><span class="kw1">def</span> test<span class="sy0">-</span>database <span class="br0">&#40;</span>open<span class="sy0">-</span>cabinet <span class="br0">&#123;</span> :<span class="me1">filename</span> <span class="st0">&quot;test-open.tokyo&quot;</span> :<span class="me1">mode</span> <span class="br0">&#40;</span><span class="sy0">+</span> OWRITER OCREAT<span class="br0">&#41;</span> <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
<span class="br0">&#40;</span>with test<span class="sy0">-</span>database <span class="br0">&#40;</span>put<span class="sy0">-</span>value <span class="st0">&quot;1&quot;</span> <span class="st0">&quot;one&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
<span class="br0">&#40;</span>with test<span class="sy0">-</span>database <span class="br0">&#40;</span>get<span class="sy0">-</span>value <span class="st0">&quot;1&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
<span class="br0">&#40;</span>with test<span class="sy0">-</span>database <span class="br0">&#40;</span><span class="kw1">print</span> <span class="br0">&#40;</span>primary<span class="sy0">-</span><span class="kw1">keys</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
<span class="br0">&#40;</span>close<span class="sy0">-</span>cabinet test<span class="sy0">-</span>database<span class="br0">&#41;</span></pre></div></div></div></div></div></div></div>




<h3>Miscellaneous</h3>

<p>Use (primary-keys) to return a lazy list of primary keys.</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="clojure"><pre class="de1"><span class="br0">&#40;</span>with<span class="sy0">-</span>cabinet <span class="br0">&#123;</span> :<span class="me1">filename</span> <span class="st0">&quot;test.tokyo&quot;</span> :<span class="me1">mode</span> <span class="br0">&#40;</span><span class="sy0">+</span> OWRITER OCREATE<span class="br0">&#41;</span> :<span class="me1">type</span> :<span class="me1">table</span> <span class="br0">&#125;</span>
    <span class="br0">&#40;</span><span class="kw1">print</span> <span class="br0">&#40;</span>primary<span class="sy0">-</span><span class="kw1">keys</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></pre></div></div></div></div></div></div></div>




<h3>Links</h3>

<ul>
<li><a href="http://tokyocabinet.sourceforge.net/">Tokyo Cabinet</a></li>
<li><a href="http://tokyocabinet.sourceforge.net/javadoc/">Tokyo Cabinet / Java API</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://www.brool.com/index.php/tokyo-cabinet-api-for-clojure/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

