SupportedLanguages
Wondering if you can use Redis from your favorite language? Well here is the definitive guide to the available client libraries.
This libraries are intended to expose Redis commands, but you also have the option to use some higher level libraries that provide a
Object Hash Mappings pretty much the same idea implemented by a classic
ORM.
The following matrix should give you a quick overviwe of the state of the different client libraries existing for each supported language.
The core command set is the one of Version 1.0, while
Sharding and
Pipelining are convenient client side features not tied to any Redis server version.
Compatible client libraries are expected to implement the command sets specified in
Version 1.0 plus:
- String: MSET, MSETNX.
- List: RPOPLPUSH.
- Sorted Set (ZSET): ZADD, ZREM, ZRANGE, ZREVRANGE, ZRANGEBYSCORE, ZCARD, ZSCORE.
Compatible client libraries are expected to implement the following command sets:
- String: GET, SET, SETNX, DEL, EXISTS, INCR, DECR, MGET, INCRBY, DECRBY, GETSET, TYPE.
- List: RPUSH, LPUSH, RPOP, LPOP, LLEN, LINDEX, LSET, LRANGE, LTRIM, LREM.
- Set: SADD, SREM, SMOVE, SISMEMBER, SCARD, SPOP, SINTER, SINTERSTORE, SUNION, SUNIONSTORE, SDIFF, SDIFFSTORE, SMEMBERS.
- Keyspace: KEYS, RANDOMKEY, RENAME, RENAMENX, DBSIZE, EXPIRE, TTL.
- Databases: SELECT, MOVE, FLUSHDB, FLUSHALL.
- Sort: SORT
- Connection: AUTH, QUIT?. ???
- Persistence: SAVE, BGSAVE, LASTSAVE, SHUTDOWN?. ???
- Server: INFO, MONITOR? SLAVEOF? ???
Language | Name | Sharding | Pipelining | 1.1 | 1.0 |
ActionScript 3 | as3redis | No | Yes | Yes | Yes |
Clojure | redis-clojure | No | No | Partial | Yes |
Common Lisp | CL-Redis | No | No | No | Yes |
Erlang | erldis | No | Looks like | No | Looks like |
Go | Go-Redis | No | Yes | Yes | Yes |
Haskell | haskell-redis | No | No | No | Yes |
Java | JDBC-Redis | No | No | No | Yes |
Java | JRedis | No | Yes | Yes | Yes |
Java | Jedis | No | Yes | Yes | Yes |
LUA | redis-lua | No | No | Yes | Yes |
Perl | Redis Client | No | No | No | Yes |
Perl | AnyEvent::Redis | No | No | No | Yes |
PHP | Redis PHP Bindings | No | No | No | Yes |
PHP | phpredis (C) | No | No | No | Yes |
PHP | Predis | Yes | Yes | Yes | Yes |
PHP | Redisent | Yes | No | No | Yes |
Python | Python Client | No | No | No | Yes |
Python | py-redis | No | No | Partial | Yes |
Python | txredis | No | No | No | Yes |
Ruby | redis-rb | Yes | Yes | Yes | Yes |
Scala | scala-redis | Yes | No | No | Yes |
TCL | TCL | No | No | Yes | Yes |
- JDBC-Redis is Java driver using the JDBC interface for Redis Database. This project doesn't aim for a complete implementation of the JDBC specification since Redis isn't a relational database, but should provide a familiar interface to Java developers interact with Redis.
- Repository: http://code.google.com/p/jdbc-redis/
- Jedis is a small and sane Redis client for Java. It aims to be easier to use by providing a more natural API. It currently supports the binary-safe protocol and pipelining. Sharding and connection pooling is on the way.
- Author: Jonathan Leibiusky, @xetorthio.
- Repository: http://github.com/xetorthio/jedis
- A flexible and feature-complete PHP client library for the Redis key-value database. Predis is currently a work-in-progress and it targets PHP >= 5.3, though it is highly due to be backported to PHP >= 5.2.6 as soon as the public API and the internal design on the main branch will be considered stable enough.
- Author: Daniele Alessandri, @jol1hahn
- Repository: http://github.com/nrk/predis/