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.
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
A Riak-backed cache extension for Railo/ColdFusion
Common Lisp
Dart
- riak-dart — HTTP client for Riak written in Dart
Django (Python)
Riak-based Session Backend for Django * Django Riak Engine
A Riak backend for Django
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
- goriak — Go language driver for Riak KV
Grails
Griffon
Groovy
- spring-riak — Riak support from Groovy and/or Java
Haskell
A fast Haskell client library from the team at MailRank.
Java
Java Client Library for Riak based on the Protocol Buffers API * Asynchronous Riak Java Client
Asynchronous, NIO-based Protocol Buffers client for Riak * Riak Module for the Play Framework
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
- Riak OCaml Client — Riak OCaml client
- OCaml Riakc — A Protocol Buffers client for Riak
Perl
- Net::Riak — A Perl interface to Riak
- AnyEvent-Riak adapter
Non-blocking Riak adapter using anyevent
* riak-tiny
Perl interface to Riak without Moose
* Riak::Light
Fast and lightweight Perl client for Riak (PBC only)
PHP
- riak-client — A Riak 2.0-compliant PHP client with support for Protocol Buffers by Fabio Silva
- Ripple-PHP — A port of Ripple to PHP
- riiak — A Riak PHP client library for the Yii Framework
- riak-php — A Riak PHP client with support for Protocol Buffers
- RiakBundle — Symfony Bundle designed to ease interaction with Riak
- php_riak — A PHP extension written in C, Both Riak client and PHP session module
Python
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
- riak.rkt — Racket API to Riak
- Racket Riak — Racket 1.3.x API to Riak
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.