Developing with Riak KV
Client Libraries

Basho-Supported Libraries

Basho officially supports a number of open-source client libraries for a variety of programming languages and environments.

Language Source Documentation Download
Java riak-java-client javadoc, wiki Maven Central
Ruby riak-ruby-client GitHub Pages RubyGems
Python riak-python-client sphinx PyPI
C# riak-dotnet-client api docs, wiki NuGet package, GitHub Releases
Node.js riak-nodejs-client api docs, wiki NPM, GitHub Releases
PHP riak-php-client apigen
Erlang riak-erlang-client (riakc) edoc GitHub
Go riak-go-client GoDoc GitHub

Note: All official clients use the integrated issue tracker on GitHub for bug reporting.

In addition to the official clients, Basho provides some unofficial client libraries, listed below. There are also many client libraries and related community projects.

Community Libraries

The Riak Community is developing at a break-neck pace, and the number of community-contributed libraries and drivers is growing right along side it. Here is a list of projects that may suit your programming needs or curiosities. If you know of something that needs to be added or are developing something that you wish to see added to this list, please fork the Riak Docs repo on GitHub and send us a pull request.

Note on community-produced libraries

All of these projects and libraries are at various stages of completeness and may not suit your application’s needs based on their level of maturity and activity.

Client Libraries and Frameworks

C/C++

  • riak-cpp — A C++ Riak client library for use with C++11 compilers
  • Riak C Driver — A library to communicate with Riak using cURL and Protocol Buffers
  • Riack — A simple C client library
  • Riack++ — A C++ wrapper around riack

Clojure

  • knockbox — An eventual consistency toolbox for Clojure
  • Welle — An expressive Clojure client with batteries included
  • clj-riak — Clojure bindings to the Riak Protocol Buffers API
  • sumo — A Protocol Buffer-specific client for Riak with KV, 2i, and MapReduce support
  • kria — Riak 2.0 Asynchronous (NIO.2) Clojure client. Callback driven, low level, Protocol Buffer API, Java 7.

ColdFusion

Common Lisp

Dart

  • riak-dart — HTTP client for Riak written in Dart

Django (Python)

Erlang

  • Uriak Pool — Erlang connection pool library from the team at Unison
  • Riak PBC Pool — Riak Protocol Buffer Client pool application
  • Pooly — Riak Process Pool
  • riakpool — Application for maintaining a dynamic pool of Protocol Buffer client connections to a Riak database
  • pooler — An OTP Process Pool Application
  • krc — A simple wrapper around the official Riak client for Erlang
  • riakc_pool — A really simple Riak client process pool based on poolboy

Go

  • riaken — A fast and extendable Riak Protocol Buffer Client
  • goriakpbc — A Golang Riak client inspired by the Ruby riak-client from Basho and riakpbc from mrb
  • riakpbc — A Riak Protocol Buffer client in Go

Grails

Griffon

Groovy

Haskell

Java

Lisp-flavored Erlang

  • Gutenberg — Riak MapReduce examples written in LFE

Node.js

  • zukai — Riak ODM for Node.js from Troy Melhase
  • riak-pb — Riak Protocol Buffers client for Node.js from the team at CrowdProcess
  • node_riak — Voxer’s production Node.js client for Riak.
  • riakpbc — A simple Riak Protocol Buffer client library for Node.js
  • nodiak — Supports bulk get/save/delete, sibling auto-resolution, MapReduce chaining, Search, and 2i’s
  • resourceful-riak — A Riak engine to the resourceful model framework from flatiron
  • Connect-Riak — Riak session store for Connect backed by Riak-js
  • Riak-js — Node.js client for Riak with support for HTTP and Protocol Buffers
  • Riakjs-model — a model abstraction around riak-js
  • Node-Riak — A wrapper around Node’s HTTP facilities for communicating with Riak
  • riak-dc — A very thin, very small http-based interface to Riak using promises intended to be used for small tools like command-line applications; aims to have the “most-synchronous- like” interface.
  • Nori — Experimental Riak HTTP library for Node.js modeled after Ripple
  • OrionNodeRiak — Node-based server and database-frontend for Sproutcore
  • Chinood — Object data mapper for Riak built on Nodiak
  • SimpleRiak — A very simple Riak HTTP client

OCaml

Perl

PHP

Python

  • Aioriak — Asyncio PBC Riak 2.0+ client library. (Based on official Basho python client)
  • Riakasaurus — A Riak client library for Twisted (based on txriak)
  • RiakKit — A small Python ORM that sits on top of riak-python-client, similar to mongokit and couchdbkit
  • riakalchemy — Object mapper for Riak written in Python
  • riak_crdt — A CRDT (Conflict-Free Replicated Data Type) loader for Riak using the CRDT API
  • txriak — A Twisted module for communicating with Riak via the HTTP interface
  • txriakidx — Riak client for Twisted Python that implements transparent indexes

Racket

Ruby

  • Risky — A lightweight Ruby ORM for Riak
  • riak_sessions — Riak-backed session storage for Rack
  • Riaktor — Ruby client and object mapper for Riak
  • dm-riak-adapter — DataMapper adapter for Riak
  • Riak PB Client — Riak Protocol Buffer Client in Ruby
  • Devise-Ripple — An ORM strategy to use Devise with Riak
  • ripple-anaf — Accepts nested attributes support for Ripple
  • Pabst — Cross-platform Ruby extension for Protocol Buffers written in both Objective-C and Objective-C++

Scala

  • Riakka — Scala library for talking to Riak
  • Ryu — A Tornado Whirlwind Kick Scala client for the Riak raw HTTP interface
  • Raiku — An Akka IO- and Sentinel-driven Riak Scala client

Smalltalk

  • Phriak — A Riak client for Pharo Smalltalk based on Runar Jordahl’s EpigentRiakInterface
  • EpigentRiakInterface — A Pharo Smalltalk interface to Riak. There is also a blog post with some additional info about the client here.