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