mirror of
https://github.com/fluencelabs/redis
synced 2025-03-18 08:30:51 +00:00
Erlang client updated
This commit is contained in:
parent
be42428336
commit
67d3e950ba
@ -1,2 +1,2 @@
|
||||
repo: 9e1f35ed7fdc7b3da7f5ff66a71d1975b85e2ae5
|
||||
node: d9dd3d00c6fafaa09809061816f4e3b85a32811d
|
||||
node: 85e28ca5597e22ff1dde18ed4625f41923128993
|
||||
|
@ -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) ->
|
||||
|
@ -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"]).
|
||||
|
@ -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"),
|
||||
|
@ -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").
|
||||
|
9
client-libraries/update-python-client.sh
Executable file
9
client-libraries/update-python-client.sh
Executable file
@ -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
|
Loading…
x
Reference in New Issue
Block a user