1 /*
2  * Hunt - A redis client library for D programming language.
3  *
4  * Copyright (C) 2018-2019 HuntLabs
5  *
6  * Website: https://www.huntlabs.net/
7  *
8  * Licensed under the Apache-2.0 License.
9  *
10  */
11 
12 module hunt.redis.commands.RedisClusterCommands;
13 
14 import hunt.redis.Protocol;
15 
16 import hunt.redis.StreamEntryID;
17 import hunt.redis.GeoCoordinate;
18 import hunt.redis.GeoRadiusResponse;
19 import hunt.redis.GeoUnit;
20 import hunt.redis.ListPosition;
21 import hunt.redis.StreamPendingEntry;
22 import hunt.redis.ScanResult;
23 import hunt.redis.SortingParams;
24 import hunt.redis.StreamEntry;
25 import hunt.redis.Tuple;
26 import hunt.redis.params.GeoRadiusParam;
27 import hunt.redis.params.SetParams;
28 import hunt.redis.params.ZAddParams;
29 import hunt.redis.params.ZIncrByParams;
30 
31 import hunt.collection.List;
32 import hunt.collection.Map;
33 import hunt.collection.Set;
34 
35 import hunt.Long;
36 
37 
38 /**
39  * 
40  */
41 interface RedisClusterCommands {
42     string set(string key, string value);
43 
44     string set(string key, string value, SetParams params);
45 
46     string get(string key);
47 
48     bool exists(string key);
49 
50     Long persist(string key);
51 
52     string type(string key);
53 
54     // const(ubyte)[] dump(string key);
55 
56     // string restore(string key, int ttl, const(ubyte)[] serializedValue);
57 
58     // long expire(string key, int seconds);
59 
60     // long pexpire(string key, long milliseconds);
61 
62     // long expireAt(string key, long unixTime);
63 
64     // long pexpireAt(string key, long millisecondsTimestamp);
65 
66     // long ttl(string key);
67 
68     // long pttl(string key);
69 
70     // long touch(string key);
71 
72     // bool setbit(string key, long offset, bool value);
73 
74     // bool setbit(string key, long offset, string value);
75 
76     // bool getbit(string key, long offset);
77 
78     // long setrange(string key, long offset, string value);
79 
80     // string getrange(string key, long startOffset, long endOffset);
81 
82     // string getSet(string key, string value);
83 
84     // long setnx(string key, string value);
85 
86     // string setex(string key, int seconds, string value);
87 
88     // string psetex(string key, long milliseconds, string value);
89 
90     // long decrBy(string key, long decrement);
91 
92     // long decr(string key);
93 
94     // long incrBy(string key, long increment);
95 
96     // double incrByFloat(string key, double increment);
97 
98     // long incr(string key);
99 
100     // long append(string key, string value);
101 
102     // string substr(string key, int start, int end);
103 
104     // long hset(string key, string field, string value);
105 
106     // long hset(string key, Map!(string, string) hash);
107 
108     // string hget(string key, string field);
109 
110     // long hsetnx(string key, string field, string value);
111 
112     // string hmset(string key, Map!(string, string) hash);
113 
114     // List!(string) hmget(string key, string[] fields...);
115 
116     // long hincrBy(string key, string field, long value);
117 
118     // bool hexists(string key, string field);
119 
120     // long hdel(string key, string[] field...);
121 
122     // long hlen(string key);
123 
124     // Set!(string) hkeys(string key);
125 
126     // List!(string) hvals(string key);
127 
128     // Map!(string, string) hgetAll(string key);
129 
130     // long rpush(string key, string[] string...);
131 
132     // long lpush(string key, string[] string...);
133 
134     // long llen(string key);
135 
136     // List!(string) lrange(string key, long start, long stop);
137 
138     // string ltrim(string key, long start, long stop);
139 
140     // string lindex(string key, long index);
141 
142     // string lset(string key, long index, string value);
143 
144     // long lrem(string key, long count, string value);
145 
146     // string lpop(string key);
147 
148     // string rpop(string key);
149 
150     // long sadd(string key, string[] member...);
151 
152     // Set!(string) smembers(string key);
153 
154     // long srem(string key, string[] member...);
155 
156     // string spop(string key);
157 
158     // Set!(string) spop(string key, long count);
159 
160     // long scard(string key);
161 
162     // bool sismember(string key, string member);
163 
164     // string srandmember(string key);
165 
166     // List!(string) srandmember(string key, int count);
167 
168     // long strlen(string key);
169 
170     // long zadd(string key, double score, string member);
171 
172     // long zadd(string key, double score, string member, ZAddParams params);
173 
174     // long zadd(string key, Map!(string, double) scoreMembers);
175 
176     // long zadd(string key, Map!(string, double) scoreMembers, ZAddParams params);
177 
178     // Set!(string) zrange(string key, long start, long stop);
179 
180     // long zrem(string key, string[] members...);
181 
182     // double zincrby(string key, double increment, string member);
183 
184     // double zincrby(string key, double increment, string member, ZIncrByParams params);
185 
186     // long zrank(string key, string member);
187 
188     // long zrevrank(string key, string member);
189 
190     // Set!(string) zrevrange(string key, long start, long stop);
191 
192     // Set!(Tuple) zrangeWithScores(string key, long start, long stop);
193 
194     // Set!(Tuple) zrevrangeWithScores(string key, long start, long stop);
195 
196     // long zcard(string key);
197 
198     // double zscore(string key, string member);
199 
200     // List!(string) sort(string key);
201 
202     // List!(string) sort(string key, SortingParams sortingParameters);
203 
204     // long zcount(string key, double min, double max);
205 
206     // long zcount(string key, string min, string max);
207 
208     // Set!(string) zrangeByScore(string key, double min, double max);
209 
210     // Set!(string) zrangeByScore(string key, string min, string max);
211 
212     // Set!(string) zrevrangeByScore(string key, double max, double min);
213 
214     // Set!(string) zrangeByScore(string key, double min, double max, int offset, int count);
215 
216     // Set!(string) zrevrangeByScore(string key, string max, string min);
217 
218     // Set!(string) zrangeByScore(string key, string min, string max, int offset, int count);
219 
220     // Set!(string) zrevrangeByScore(string key, double max, double min, int offset, int count);
221 
222     // Set!(Tuple) zrangeByScoreWithScores(string key, double min, double max);
223 
224     // Set!(Tuple) zrevrangeByScoreWithScores(string key, double max, double min);
225 
226     // Set!(Tuple) zrangeByScoreWithScores(string key, double min, double max, int offset, int count);
227 
228     // Set!(string) zrevrangeByScore(string key, string max, string min, int offset, int count);
229 
230     // Set!(Tuple) zrangeByScoreWithScores(string key, string min, string max);
231 
232     // Set!(Tuple) zrevrangeByScoreWithScores(string key, string max, string min);
233 
234     // Set!(Tuple) zrangeByScoreWithScores(string key, string min, string max, int offset, int count);
235 
236     // Set!(Tuple) zrevrangeByScoreWithScores(string key, double max, double min, int offset, int count);
237 
238     // Set!(Tuple) zrevrangeByScoreWithScores(string key, string max, string min, int offset, int count);
239 
240     // long zremrangeByRank(string key, long start, long stop);
241 
242     // long zremrangeByScore(string key, double min, double max);
243 
244     // long zremrangeByScore(string key, string min, string max);
245 
246     // long zlexcount(string key, string min, string max);
247 
248     // Set!(string) zrangeByLex(string key, string min, string max);
249 
250     // Set!(string) zrangeByLex(string key, string min, string max, int offset, int count);
251 
252     // Set!(string) zrevrangeByLex(string key, string max, string min);
253 
254     // Set!(string) zrevrangeByLex(string key, string max, string min, int offset, int count);
255 
256     // long zremrangeByLex(string key, string min, string max);
257 
258     // long linsert(string key, ListPosition where, string pivot, string value);
259 
260     // long lpushx(string key, string[] string...);
261 
262     // long rpushx(string key, string[] string...);
263 
264     // List!(string) blpop(int timeout, string key);
265 
266     // List!(string) brpop(int timeout, string key);
267 
268     Long del(string key);
269 
270     Long unlink(string key);
271 
272     // string echo(string string);
273 
274     // long bitcount(string key);
275 
276     // long bitcount(string key, long start, long end);
277 
278     // ScanResult!(MapEntry!(string, string)) hscan(string key, string cursor);
279 
280     // ScanResult!(string) sscan(string key, string cursor);
281 
282     // ScanResult!(Tuple) zscan(string key, string cursor);
283 
284     // long pfadd(string key, string[] elements...);
285 
286     // long pfcount(string key);
287 
288     // // Geo Commands
289 
290     // long geoadd(string key, double longitude, double latitude, string member);
291 
292     // long geoadd(string key, Map!(string, GeoCoordinate) memberCoordinateMap);
293 
294     // double geodist(string key, string member1, string member2);
295 
296     // double geodist(string key, string member1, string member2, GeoUnit unit);
297 
298     // List!(string) geohash(string key, string[] members...);
299 
300     // List!(GeoCoordinate) geopos(string key, string[] members...);
301 
302     // List!(GeoRadiusResponse) georadius(string key, double longitude,
303     //         double latitude, double radius, GeoUnit unit);
304 
305     // List!(GeoRadiusResponse) georadiusReadonly(string key, double longitude,
306     //         double latitude, double radius, GeoUnit unit);
307 
308     // List!(GeoRadiusResponse) georadius(string key, double longitude,
309     //         double latitude, double radius, GeoUnit unit, GeoRadiusParam param);
310 
311     // List!(GeoRadiusResponse) georadiusReadonly(string key, double longitude,
312     //         double latitude, double radius, GeoUnit unit, GeoRadiusParam param);
313 
314     // List!(GeoRadiusResponse) georadiusByMember(string key, string member,
315     //         double radius, GeoUnit unit);
316 
317     // List!(GeoRadiusResponse) georadiusByMemberReadonly(string key, string member,
318     //         double radius, GeoUnit unit);
319 
320     // List!(GeoRadiusResponse) georadiusByMember(string key, string member,
321     //         double radius, GeoUnit unit, GeoRadiusParam param);
322 
323     // List!(GeoRadiusResponse) georadiusByMemberReadonly(string key, string member,
324     //         double radius, GeoUnit unit, GeoRadiusParam param);
325 
326     // /**
327     //  * Executes BITFIELD Redis command
328     //  * @param key
329     //  * @param arguments
330     //  * @return 
331     //  */
332     // List!(long) bitfield(string key, string[] arguments...);
333 
334     // /**
335     //  * Used for HSTRLEN Redis command
336     //  * @param key 
337     //  * @param field
338     //  * @return lenth of the value for key
339     //  */
340     // long hstrlen(string key, string field);
341 
342     // /**
343     //  * XADD key ID field string [field string ...]
344     //  * 
345     //  * @param key
346     //  * @param id
347     //  * @param hash
348     //  * @return the ID of the added entry
349     //  */
350     // StreamEntryID xadd(string key, StreamEntryID id, Map!(string, string) hash);
351 
352     // /**
353     //  * XADD key MAXLEN ~ LEN ID field string [field string ...]
354     //  * 
355     //  * @param key
356     //  * @param id
357     //  * @param hash
358     //  * @param maxLen
359     //  * @param approximateLength
360     //  * @return
361     //  */
362     // StreamEntryID xadd(string key, StreamEntryID id, Map!(string, string) hash,
363     //         Long maxLen, bool approximateLength);
364 
365     // /**
366     //  * XLEN key
367     //  * 
368     //  * @param key
369     //  * @return
370     //  */
371     // long xlen(string key);
372 
373     // /**
374     //  * XRANGE key start end [COUNT count]
375     //  * 
376     //  * @param key
377     //  * @param start
378     //  * @param end
379     //  * @param count
380     //  * @return
381     //  */
382     // List!(StreamEntry) xrange(string key, StreamEntryID start, StreamEntryID end, int count);
383 
384     // /**
385     //  * XREVRANGE key end start [COUNT <n>]
386     //  * @param key
387     //  * @param end
388     //  * @param start
389     //  * @param count
390     //  * @return
391     //  */
392     // List!(StreamEntry) xrevrange(string key, StreamEntryID end, StreamEntryID start, int count);
393 
394     // /**
395     //  * XREAD [COUNT count] [BLOCK milliseconds] STREAMS key [key ...] ID [ID ...]
396     //  * 
397     //  * @param key
398     //  * @param count
399     //  * @param block
400     //  * @param streams
401     //  * @return
402     //  */
403     // List!(MapEntry!(string, List!(StreamEntry))) xread(int count, long block,
404     //         MapEntry!(string, StreamEntryID)[] streams...);
405 
406     // /**
407     //  * XACK key group ID [ID ...]
408     //  * @param key
409     //  * @param group
410     //  * @param ids
411     //  * @return
412     //  */
413     // long xack(string key, string group, StreamEntryID[] ids...);
414 
415     // /**
416     //  * XGROUP CREATE <key> <groupname> <id or $>
417     //  * 
418     //  * @param key
419     //  * @param groupname
420     //  * @param id
421     //  * @return
422     //  */
423     // string xgroupCreate(string key, string groupname, StreamEntryID id, bool makeStream);
424 
425     // /**
426     //  * XGROUP SETID <key> <groupname> <id or $>
427     //  * 
428     //  * @param key
429     //  * @param groupname
430     //  * @param id
431     //  * @return
432     //  */
433     // string xgroupSetID(string key, string groupname, StreamEntryID id);
434 
435     // /**
436     //  * XGROUP DESTROY <key> <groupname>
437     //  * 
438     //  * @param key
439     //  * @param groupname
440     //  * @return
441     //  */
442     // long xgroupDestroy(string key, string groupname);
443 
444     // /**
445     //  * XGROUP DELCONSUMER <key> <groupname> <consumername> 
446     //  * @param key
447     //  * @param groupname
448     //  * @param consumername
449     //  * @return
450     //  */
451     // string xgroupDelConsumer(string key, string groupname, string consumername);
452 
453     // /**
454     //  * XREAD [COUNT count] [BLOCK milliseconds] STREAMS key [key ...] ID [ID ...]
455     //  * 
456     //  * @param key
457     //  * @param groupname
458     //  * @param cosumer
459     //  * @param count
460     //  * @param block
461     //  * @param streams
462     //  * @return
463     //  */
464     // List!(MapEntry!(string, List!(StreamEntry))) xreadGroup(string groupname, string consumer,
465     //         int count, long block, bool noAck, MapEntry!(string, StreamEntryID)[] streams...);
466 
467     // /**
468     //  * XPENDING key group [start end count] [consumer]
469     //  * 
470     //  * @param key
471     //  * @param groupname
472     //  * @param start
473     //  * @param end
474     //  * @param count
475     //  * @param consumername
476     //  * @return
477     //  */
478     // List!(StreamPendingEntry) xpending(string key, string groupname,
479     //         StreamEntryID start, StreamEntryID end, int count, string consumername);
480 
481     // /**
482     //  * XDEL key ID [ID ...]
483     //  * @param key
484     //  * @param ids
485     //  * @return
486     //  */
487     // long xdel(string key, StreamEntryID[] ids...);
488 
489     // /**
490     //  * XTRIM key MAXLEN [~] count
491     //  * @param key
492     //  * @param maxLen
493     //  * @param approximateLength
494     //  * @return
495     //  */
496     // long xtrim(string key, long maxLen, bool approximateLength);
497 
498     // /**
499     //  *  XCLAIM <key> <group> <consumer> <min-idle-time> <ID-1> <ID-2>
500     //  *        [IDLE <milliseconds>] [TIME <mstime>] [RETRYCOUNT <count>]
501     //  *        [FORCE] [JUSTID]
502     //  */
503     // List!(StreamEntry) xclaim(string key, string group, string consumername,
504     //         Long minIdleTime, long newIdleTime, int retries, bool force, StreamEntryID[] ids...);
505 
506     // long waitReplicas(string key, int replicas, long timeout);
507 
508     // Object sendCommand(string sampleKey, ProtocolCommand cmd, string[] args...);
509 }