]> git.saurik.com Git - redis.git/commitdiff
Erlang client updated
authorantirez <antirez@gmail.com>
Sat, 30 May 2009 08:17:06 +0000 (10:17 +0200)
committerantirez <antirez@gmail.com>
Sat, 30 May 2009 08:17:06 +0000 (10:17 +0200)
client-libraries/erlang/.hg_archival.txt
client-libraries/erlang/src/client.erl
client-libraries/erlang/src/erldis.erl
client-libraries/erlang/test/erldis_tests.erl
client-libraries/erlang/test/proto_tests.erl
client-libraries/update-python-client.sh [new file with mode: 0755]

index dc46065ca9a11337db5f6eb9c2831dd1d2442b42..70656b77886065a3e71a0e82da63f525338cc783 100644 (file)
@@ -1,2 +1,2 @@
 repo: 9e1f35ed7fdc7b3da7f5ff66a71d1975b85e2ae5
-node: d9dd3d00c6fafaa09809061816f4e3b85a32811d
+node: 85e28ca5597e22ff1dde18ed4625f41923128993
index dc3e983627a22f480a2a8c260236e38a88055ee4..734a9d3ea0653d1e5c854452981e2d41d8267e0d 100644 (file)
@@ -48,15 +48,18 @@ connect(Host) ->
 connect(Host, Port) ->
     gen_server:start_link(?MODULE, [Host, Port], []).
 
+% This is the simple send with a single row of commands
 ssend(Client, Cmd) -> ssend(Client, Cmd, []).
 ssend(Client, Cmd, Args) ->
     gen_server:cast(Client, {send, sformat([Cmd|Args])}).
 
+% This is the complete send with multiple rows
 send(Client, Cmd) -> send(Client, Cmd, []).
 send(Client, Cmd, Args) ->
     gen_server:cast(Client, {send,
         string:join([str(Cmd), format(Args)], " ")}).
 
+% asynchronous send, we don't care about the result.
 asend(Client, Cmd) ->
     gen_server:cast(Client, {asend, Cmd}).
 disconnect(Client) ->
index 136e2eb09489a122efd5002e8824e944eb05e6c7..80d78eae95efcd30c5a9b02533861de4895ff433 100644 (file)
@@ -24,14 +24,19 @@ internal_set_like(Client, Command, Key, Value) ->
 
 get_all_results(Client) -> client:get_all_results(Client).
 
+auth(Client, Password) -> client:ssend(Client, auth, [Password]).
+
 set(Client, Key, Value) -> internal_set_like(Client, set, Key, Value).
+get(Client, Key) -> client:ssend(Client, get, [Key]).
+getset(Client, Key, Value) -> internal_set_like(Client, getset, Key, Value).
+mget(Client, Keys) -> client:ssend(Client, mget, Keys).
 setnx(Client, Key, Value) -> internal_set_like(Client, setnx, Key, Value).
 incr(Client, Key) -> client:ssend(Client, incr, [Key]).
 incrby(Client, Key, By) -> client:ssend(Client, incrby, [Key, By]).
 decr(Client, Key) -> client:ssend(Client, decr, [Key]).
 decrby(Client, Key, By) -> client:ssend(Client, decrby, [Key, By]).
-get(Client, Key) -> client:ssend(Client, get, [Key]).
-mget(Client, Keys) -> client:ssend(Client, mget, Keys).
+
+
 
 %% Commands operating on every value
 exists(Client, Key) -> client:ssend(Client, exists, [Key]).
@@ -41,10 +46,11 @@ keys(Client, Pattern) -> client:ssend(Client, keys, [Pattern]).
 randomkey(Client, Key) -> client:ssend(Client, randomkey, [Key]).
 rename(Client, OldKey, NewKey) -> client:ssend(Client, rename, [OldKey, NewKey]).
 renamenx(Client, OldKey, NewKey) -> client:ssend(Client, renamenx, [OldKey, NewKey]).
+dbsize(Client) -> client:ssend(Client, dbsize).
+expire(Client, Key, Seconds) -> client:ssend(Client, expire, [Key, Seconds]).
+ttl(Client, Key) -> client:ssend(Client, ttl, [Key]).
+
 
-%% Commands operating on both lists and sets
-sort(Client, Key) -> client:ssend(Client, sort, [Key]).
-sort(Client, Key, Extra) -> client:ssend(Client, sort, [Key, Extra]).    
 
 %% Commands operating on lists
 rpush(Client, Key, Value) -> internal_set_like(Client, rpush, Key, Value).
@@ -53,30 +59,54 @@ llen(Client, Key) -> client:ssend(Client, llen, [Key]).
 lrange(Client, Key, Start, End) -> client:ssend(Client, lrange, [Key, Start, End]).
 ltrim(Client, Key, Start, End) -> client:ssend(Client, ltrim, [Key, Start, End]).
 lindex(Client, Key, Index) -> client:ssend(Client, lindex, [Key, Index]).
-lpop(Client, Key) -> client:ssend(Client, lpop, [Key]).
-rpop(Client, Key) -> client:ssend(Client, rpop, [Key]).
-lrem(Client, Key, Number, Value) ->
-    client:send(Client, lrem, [[Key, Number, length(Value)],
-                               [Value]]).
 lset(Client, Key, Index, Value) ->
     client:send(Client, lset, [[Key, Index, length(Value)],
                                [Value]]).
+lrem(Client, Key, Number, Value) ->
+    client:send(Client, lrem, [[Key, Number, length(Value)],
+                               [Value]]).
+lpop(Client, Key) -> client:ssend(Client, lpop, [Key]).
+rpop(Client, Key) -> client:ssend(Client, rpop, [Key]).
+
+
 
 %% Commands operating on sets
 sadd(Client, Key, Value) -> internal_set_like(Client, sadd, Key, Value).
 srem(Client, Key, Value) -> internal_set_like(Client, srem, Key, Value).
+smove(Client, SrcKey, DstKey, Member) -> client:send(Client, smove, [[SrcKey, DstKey, length(Member)],
+                                                                     [Member]]).
 scard(Client, Key) -> client:ssend(Client, scard, [Key]).
 sismember(Client, Key, Value) -> internal_set_like(Client, sismember, Key, Value).
 sintersect(Client, Keys) -> client:ssend(Client, sinter, Keys).
+sinter(Client, Keys) -> sintersect(Client, Keys).
+sinterstore(Client, DstKey, Keys) -> client:ssend(Client, sinterstore, [DstKey|Keys]).
+sunion(Client, Keys) -> client:ssend(Client, sunion, Keys).
+sunionstore(Client, DstKey, Keys) -> client:ssend(Client, sunionstore, [DstKey|Keys]).
+sdiff(Client, Keys) -> client:ssend(Client, sdiff, Keys).
+sdiffstore(Client, DstKey, Keys) -> client:ssend(Client, sdiffstore, [DstKey|Keys]).
 smembers(Client, Key) -> client:ssend(Client, smembers, [Key]).
 
 
 %% Multiple DB commands
-flushdb(Client) -> client:ssend(Client, flushdb).
-flushall(Client) -> client:ssend(Client, flushall).
 select(Client, Index) -> client:ssend(Client, select, [Index]).
 move(Client, Key, DBIndex) -> client:ssend(Client, move, [Key, DBIndex]).
+flushdb(Client) -> client:ssend(Client, flushdb).
+flushall(Client) -> client:ssend(Client, flushall).
+
+
+%% Commands operating on both lists and sets
+sort(Client, Key) -> client:ssend(Client, sort, [Key]).
+sort(Client, Key, Extra) -> client:ssend(Client, sort, [Key, Extra]).    
+
+
+%% Persistence control commands
 save(Client) -> client:ssend(Client, save).
 bgsave(Client) -> client:ssend(Client, bgsave).
 lastsave(Client) -> client:ssend(Client, lastsave).
 shutdown(Client) -> client:asend(Client, shutdown).
+
+
+%% Remote server control commands
+info(Client) -> client:ssend(Client, info).
+slaveof(Client, Host, Port) -> client:ssend(Client, slaveof, [Host, Port]).
+slaveof(Client) -> client:ssend(Client, slaveof, ["no one"]).
index 45042abf44ad6517db3d679b14d7dbfac55043f7..4ebdd24a86ca9c44c4e017b4f6b852d992618647 100644 (file)
@@ -14,7 +14,7 @@ utils_test() ->
     ?assertEqual(client:format([[1, 2, 3]]), "1 2 3"),
     ?assertEqual(client:format([[1,2,3], [4,5,6]]), "1 2 3\r\n4 5 6").
 
-pipeline_test() ->
+basic_test() ->
     {ok, Client} = erldis:connect("localhost"),
     erldis:flushall(Client),
     erldis:get(Client, "pippo"),
index 5bae317e27a1e138934f1437605370a48cfe513f..a07f9313dce4ca2237ce5c363de20fb4de94a6f5 100644 (file)
@@ -7,4 +7,4 @@ parse_test() ->
     pong = proto:parse(empty, "+PONG"),
     false = proto:parse(empty, ":0"),
     true = proto:parse(empty, ":1"),
-    {error, no_such_key} = proto:parse(empty, "-1").
+    {error, "1"} = proto:parse(empty, "-1").
diff --git a/client-libraries/update-python-client.sh b/client-libraries/update-python-client.sh
new file mode 100755 (executable)
index 0000000..e5f0383
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/sh
+rm -rf temp
+mkdir temp
+cd temp
+git clone git://github.com/ludoo/redis.git
+cd ..
+rm -rf python
+mv temp/redis/client-libraries/python python
+rm -rf temp