]> git.saurik.com Git - redis.git/blob - client-libraries/erlang/src/erldis.erl
update-ruby-client script already points to ezmobius repo
[redis.git] / client-libraries / erlang / src / erldis.erl
1 -module(erldis).
2
3 -compile(export_all).
4 -define(EOL, "\r\n").
5
6 %% helpers
7 flatten({error, Message}) ->
8 {error, Message};
9 flatten(List) when is_list(List)->
10 lists:flatten(List).
11
12 %% exposed API
13 connect(Host) ->
14 client:connect(Host).
15
16 quit(Client) ->
17 client:asend(Client, "QUIT"),
18 client:disconnect(Client).
19
20 %% Commands operating on string values
21 internal_set_like(Client, Command, Key, Value) ->
22 client:send(Client, Command, [[Key, length(Value)],
23 [Value]]).
24
25 get_all_results(Client) -> client:get_all_results(Client).
26
27 auth(Client, Password) -> client:ssend(Client, auth, [Password]).
28
29 set(Client, Key, Value) -> internal_set_like(Client, set, Key, Value).
30 get(Client, Key) -> client:ssend(Client, get, [Key]).
31 getset(Client, Key, Value) -> internal_set_like(Client, getset, Key, Value).
32 mget(Client, Keys) -> client:ssend(Client, mget, Keys).
33 setnx(Client, Key, Value) -> internal_set_like(Client, setnx, Key, Value).
34 incr(Client, Key) -> client:ssend(Client, incr, [Key]).
35 incrby(Client, Key, By) -> client:ssend(Client, incrby, [Key, By]).
36 decr(Client, Key) -> client:ssend(Client, decr, [Key]).
37 decrby(Client, Key, By) -> client:ssend(Client, decrby, [Key, By]).
38
39
40
41 %% Commands operating on every value
42 exists(Client, Key) -> client:ssend(Client, exists, [Key]).
43 del(Client, Key) -> client:ssend(Client, del, [Key]).
44 type(Client, Key) -> client:ssend(Client, type, [Key]).
45 keys(Client, Pattern) -> client:ssend(Client, keys, [Pattern]).
46 randomkey(Client, Key) -> client:ssend(Client, randomkey, [Key]).
47 rename(Client, OldKey, NewKey) -> client:ssend(Client, rename, [OldKey, NewKey]).
48 renamenx(Client, OldKey, NewKey) -> client:ssend(Client, renamenx, [OldKey, NewKey]).
49 dbsize(Client) -> client:ssend(Client, dbsize).
50 expire(Client, Key, Seconds) -> client:ssend(Client, expire, [Key, Seconds]).
51 ttl(Client, Key) -> client:ssend(Client, ttl, [Key]).
52
53
54
55 %% Commands operating on lists
56 rpush(Client, Key, Value) -> internal_set_like(Client, rpush, Key, Value).
57 lpush(Client, Key, Value) -> internal_set_like(Client, lpush, Key, Value).
58 llen(Client, Key) -> client:ssend(Client, llen, [Key]).
59 lrange(Client, Key, Start, End) -> client:ssend(Client, lrange, [Key, Start, End]).
60 ltrim(Client, Key, Start, End) -> client:ssend(Client, ltrim, [Key, Start, End]).
61 lindex(Client, Key, Index) -> client:ssend(Client, lindex, [Key, Index]).
62 lset(Client, Key, Index, Value) ->
63 client:send(Client, lset, [[Key, Index, length(Value)],
64 [Value]]).
65 lrem(Client, Key, Number, Value) ->
66 client:send(Client, lrem, [[Key, Number, length(Value)],
67 [Value]]).
68 lpop(Client, Key) -> client:ssend(Client, lpop, [Key]).
69 rpop(Client, Key) -> client:ssend(Client, rpop, [Key]).
70
71
72
73 %% Commands operating on sets
74 sadd(Client, Key, Value) -> internal_set_like(Client, sadd, Key, Value).
75 srem(Client, Key, Value) -> internal_set_like(Client, srem, Key, Value).
76 smove(Client, SrcKey, DstKey, Member) -> client:send(Client, smove, [[SrcKey, DstKey, length(Member)],
77 [Member]]).
78 scard(Client, Key) -> client:ssend(Client, scard, [Key]).
79 sismember(Client, Key, Value) -> internal_set_like(Client, sismember, Key, Value).
80 sintersect(Client, Keys) -> client:ssend(Client, sinter, Keys).
81 sinter(Client, Keys) -> sintersect(Client, Keys).
82 sinterstore(Client, DstKey, Keys) -> client:ssend(Client, sinterstore, [DstKey|Keys]).
83 sunion(Client, Keys) -> client:ssend(Client, sunion, Keys).
84 sunionstore(Client, DstKey, Keys) -> client:ssend(Client, sunionstore, [DstKey|Keys]).
85 sdiff(Client, Keys) -> client:ssend(Client, sdiff, Keys).
86 sdiffstore(Client, DstKey, Keys) -> client:ssend(Client, sdiffstore, [DstKey|Keys]).
87 smembers(Client, Key) -> client:ssend(Client, smembers, [Key]).
88
89
90 %% Multiple DB commands
91 select(Client, Index) -> client:ssend(Client, select, [Index]).
92 move(Client, Key, DBIndex) -> client:ssend(Client, move, [Key, DBIndex]).
93 flushdb(Client) -> client:ssend(Client, flushdb).
94 flushall(Client) -> client:ssend(Client, flushall).
95
96
97 %% Commands operating on both lists and sets
98 sort(Client, Key) -> client:ssend(Client, sort, [Key]).
99 sort(Client, Key, Extra) -> client:ssend(Client, sort, [Key, Extra]).
100
101
102 %% Persistence control commands
103 save(Client) -> client:ssend(Client, save).
104 bgsave(Client) -> client:ssend(Client, bgsave).
105 lastsave(Client) -> client:ssend(Client, lastsave).
106 shutdown(Client) -> client:asend(Client, shutdown).
107
108
109 %% Remote server control commands
110 info(Client) -> client:ssend(Client, info).
111 slaveof(Client, Host, Port) -> client:ssend(Client, slaveof, [Host, Port]).
112 slaveof(Client) -> client:ssend(Client, slaveof, ["no one"]).