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 }