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.BinaryRedisCommands; 13 14 import hunt.redis.BinaryRedisPubSub; 15 import hunt.redis.BitOP; 16 import hunt.redis.GeoCoordinate; 17 import hunt.redis.GeoRadiusResponse; 18 import hunt.redis.GeoUnit; 19 import hunt.redis.ListPosition; 20 import hunt.redis.params.GeoRadiusParam; 21 import hunt.redis.params.SetParams; 22 import hunt.redis.params.ZAddParams; 23 import hunt.redis.params.ZIncrByParams; 24 import hunt.redis.Protocol; 25 import hunt.redis.RedisPubSub; 26 import hunt.redis.ScanParams; 27 import hunt.redis.ScanResult; 28 import hunt.redis.SortingParams; 29 import hunt.redis.StreamEntry; 30 import hunt.redis.StreamEntryID; 31 import hunt.redis.Tuple; 32 import hunt.redis.ZParams; 33 34 import hunt.collection.Collection; 35 import hunt.collection.List; 36 import hunt.collection.Map; 37 import hunt.collection.Set; 38 39 import hunt.Double; 40 import hunt.Long; 41 42 /** 43 * Common interface for sharded and non-sharded BinaryRedis 44 */ 45 interface BinaryRedisCommands { 46 string set(const(ubyte)[] key, const(ubyte)[] value); 47 48 string set(const(ubyte)[] key, const(ubyte)[] value, SetParams params); 49 50 const(ubyte)[] get(const(ubyte)[] key); 51 52 bool exists(const(ubyte)[] key); 53 54 Long persist(const(ubyte)[] key); 55 56 string type(const(ubyte)[] key); 57 58 const(ubyte)[] dump(const(ubyte)[] key); 59 60 string restore(const(ubyte)[] key, int ttl, const(ubyte)[] serializedValue); 61 62 string restoreReplace(const(ubyte)[] key, int ttl, const(ubyte)[] serializedValue); 63 64 Long expire(const(ubyte)[] key, int seconds); 65 66 Long pexpire(const(ubyte)[] key, long milliseconds); 67 68 Long expireAt(const(ubyte)[] key, long unixTime); 69 70 Long pexpireAt(const(ubyte)[] key, long millisecondsTimestamp); 71 72 Long ttl(const(ubyte)[] key); 73 74 Long pttl(const(ubyte)[] key); 75 76 Long touch(const(ubyte)[] key); 77 78 bool setbit(const(ubyte)[] key, long offset, bool value); 79 80 bool setbit(const(ubyte)[] key, long offset, const(ubyte)[] value); 81 82 bool getbit(const(ubyte)[] key, long offset); 83 84 Long setrange(const(ubyte)[] key, long offset, const(ubyte)[] value); 85 86 const(ubyte)[] getrange(const(ubyte)[] key, long startOffset, long endOffset); 87 88 const(ubyte)[] getSet(const(ubyte)[] key, const(ubyte)[] value); 89 90 Long setnx(const(ubyte)[] key, const(ubyte)[] value); 91 92 string setex(const(ubyte)[] key, int seconds, const(ubyte)[] value); 93 94 string psetex(const(ubyte)[] key, long milliseconds, const(ubyte)[] value); 95 96 Long decrBy(const(ubyte)[] key, long decrement); 97 98 Long decr(const(ubyte)[] key); 99 100 Long incrBy(const(ubyte)[] key, long increment); 101 102 Double incrByFloat(const(ubyte)[] key, double increment); 103 104 // long incr(const(ubyte)[] key); 105 106 // long append(const(ubyte)[] key, const(ubyte)[] value); 107 108 // const(ubyte)[] substr(const(ubyte)[] key, int start, int end); 109 110 // long hset(const(ubyte)[] key, const(ubyte)[] field, const(ubyte)[] value); 111 112 // long hset(const(ubyte)[] key, Map!(const(ubyte)[], const(ubyte)[]) hash); 113 114 // const(ubyte)[] hget(const(ubyte)[] key, const(ubyte)[] field); 115 116 // long hsetnx(const(ubyte)[] key, const(ubyte)[] field, const(ubyte)[] value); 117 118 // string hmset(const(ubyte)[] key, Map!(const(ubyte)[], const(ubyte)[]) hash); 119 120 // List!(const(ubyte)[]) hmget(const(ubyte)[] key, const(ubyte)[][] fields...); 121 122 // long hincrBy(const(ubyte)[] key, const(ubyte)[] field, long value); 123 124 // Double hincrByFloat(const(ubyte)[] key, const(ubyte)[] field, double value); 125 126 // bool hexists(const(ubyte)[] key, const(ubyte)[] field); 127 128 // long hdel(const(ubyte)[] key, const(ubyte)[][] field...); 129 130 // long hlen(const(ubyte)[] key); 131 132 // Set!(const(ubyte)[]) hkeys(const(ubyte)[] key); 133 134 // Collection!(const(ubyte)[]) hvals(const(ubyte)[] key); 135 136 // Map!(const(ubyte)[], const(ubyte)[]) hgetAll(const(ubyte)[] key); 137 138 // long rpush(const(ubyte)[] key, const(ubyte)[][] args...); 139 140 // long lpush(const(ubyte)[] key, const(ubyte)[][] args...); 141 142 // long llen(const(ubyte)[] key); 143 144 // List!(const(ubyte)[]) lrange(const(ubyte)[] key, long start, long stop); 145 146 // string ltrim(const(ubyte)[] key, long start, long stop); 147 148 // const(ubyte)[] lindex(const(ubyte)[] key, long index); 149 150 // string lset(const(ubyte)[] key, long index, const(ubyte)[] value); 151 152 // long lrem(const(ubyte)[] key, long count, const(ubyte)[] value); 153 154 // const(ubyte)[] lpop(const(ubyte)[] key); 155 156 // const(ubyte)[] rpop(const(ubyte)[] key); 157 158 // long sadd(const(ubyte)[] key, const(ubyte)[][] member...); 159 160 // Set!(const(ubyte)[]) smembers(const(ubyte)[] key); 161 162 // long srem(const(ubyte)[] key, const(ubyte)[][] member...); 163 164 // const(ubyte)[] spop(const(ubyte)[] key); 165 166 // Set!(const(ubyte)[]) spop(const(ubyte)[] key, long count); 167 168 // long scard(const(ubyte)[] key); 169 170 // bool sismember(const(ubyte)[] key, const(ubyte)[] member); 171 172 // const(ubyte)[] srandmember(const(ubyte)[] key); 173 174 // List!(const(ubyte)[]) srandmember(const(ubyte)[] key, int count); 175 176 Long strlen(const(ubyte)[] key); 177 178 // long zadd(const(ubyte)[] key, double score, const(ubyte)[] member); 179 180 // long zadd(const(ubyte)[] key, double score, const(ubyte)[] member, ZAddParams params); 181 182 // long zadd(const(ubyte)[] key, Map!(const(ubyte)[], double) scoreMembers); 183 184 // long zadd(const(ubyte)[] key, Map!(const(ubyte)[], double) scoreMembers, ZAddParams params); 185 186 // Set!(const(ubyte)[]) zrange(const(ubyte)[] key, long start, long stop); 187 188 // long zrem(const(ubyte)[] key, const(ubyte)[][] members...); 189 190 // Double zincrby(const(ubyte)[] key, double increment, const(ubyte)[] member); 191 192 // Double zincrby(const(ubyte)[] key, double increment, const(ubyte)[] member, ZIncrByParams params); 193 194 // long zrank(const(ubyte)[] key, const(ubyte)[] member); 195 196 // long zrevrank(const(ubyte)[] key, const(ubyte)[] member); 197 198 // Set!(const(ubyte)[]) zrevrange(const(ubyte)[] key, long start, long stop); 199 200 // Set!(Tuple) zrangeWithScores(const(ubyte)[] key, long start, long stop); 201 202 // Set!(Tuple) zrevrangeWithScores(const(ubyte)[] key, long start, long stop); 203 204 // long zcard(const(ubyte)[] key); 205 206 // Double zscore(const(ubyte)[] key, const(ubyte)[] member); 207 208 // List!(const(ubyte)[]) sort(const(ubyte)[] key); 209 210 // List!(const(ubyte)[]) sort(const(ubyte)[] key, SortingParams sortingParameters); 211 212 // long zcount(const(ubyte)[] key, double min, double max); 213 214 // long zcount(const(ubyte)[] key, const(ubyte)[] min, const(ubyte)[] max); 215 216 // Set!(const(ubyte)[]) zrangeByScore(const(ubyte)[] key, double min, double max); 217 218 // Set!(const(ubyte)[]) zrangeByScore(const(ubyte)[] key, const(ubyte)[] min, const(ubyte)[] max); 219 220 // Set!(const(ubyte)[]) zrevrangeByScore(const(ubyte)[] key, double max, double min); 221 222 // Set!(const(ubyte)[]) zrangeByScore(const(ubyte)[] key, double min, double max, int offset, int count); 223 224 // Set!(const(ubyte)[]) zrevrangeByScore(const(ubyte)[] key, const(ubyte)[] max, const(ubyte)[] min); 225 226 // Set!(const(ubyte)[]) zrangeByScore(const(ubyte)[] key, const(ubyte)[] min, const(ubyte)[] max, int offset, int count); 227 228 // Set!(const(ubyte)[]) zrevrangeByScore(const(ubyte)[] key, double max, double min, int offset, int count); 229 230 // Set!(Tuple) zrangeByScoreWithScores(const(ubyte)[] key, double min, double max); 231 232 // Set!(Tuple) zrevrangeByScoreWithScores(const(ubyte)[] key, double max, double min); 233 234 // Set!(Tuple) zrangeByScoreWithScores(const(ubyte)[] key, double min, double max, int offset, int count); 235 236 // Set!(const(ubyte)[]) zrevrangeByScore(const(ubyte)[] key, const(ubyte)[] max, const(ubyte)[] min, int offset, int count); 237 238 // Set!(Tuple) zrangeByScoreWithScores(const(ubyte)[] key, const(ubyte)[] min, const(ubyte)[] max); 239 240 // Set!(Tuple) zrevrangeByScoreWithScores(const(ubyte)[] key, const(ubyte)[] max, const(ubyte)[] min); 241 242 // Set!(Tuple) zrangeByScoreWithScores(const(ubyte)[] key, const(ubyte)[] min, const(ubyte)[] max, int offset, int count); 243 244 // Set!(Tuple) zrevrangeByScoreWithScores(const(ubyte)[] key, double max, double min, int offset, int count); 245 246 // Set!(Tuple) zrevrangeByScoreWithScores(const(ubyte)[] key, const(ubyte)[] max, const(ubyte)[] min, int offset, int count); 247 248 // long zremrangeByRank(const(ubyte)[] key, long start, long stop); 249 250 // long zremrangeByScore(const(ubyte)[] key, double min, double max); 251 252 // long zremrangeByScore(const(ubyte)[] key, const(ubyte)[] min, const(ubyte)[] max); 253 254 // long zlexcount(const(ubyte)[] key, const(ubyte)[] min, const(ubyte)[] max); 255 256 // Set!(const(ubyte)[]) zrangeByLex(const(ubyte)[] key, const(ubyte)[] min, const(ubyte)[] max); 257 258 // Set!(const(ubyte)[]) zrangeByLex(const(ubyte)[] key, const(ubyte)[] min, const(ubyte)[] max, int offset, 259 // int count); 260 261 // Set!(const(ubyte)[]) zrevrangeByLex(const(ubyte)[] key, const(ubyte)[] max, const(ubyte)[] min); 262 263 // Set!(const(ubyte)[]) zrevrangeByLex(const(ubyte)[] key, const(ubyte)[] max, const(ubyte)[] min, int offset, 264 // int count); 265 266 // long zremrangeByLex(const(ubyte)[] key, const(ubyte)[] min, const(ubyte)[] max); 267 268 // long linsert(const(ubyte)[] key, ListPosition where, const(ubyte)[] pivot, const(ubyte)[] value); 269 270 // long lpushx(const(ubyte)[] key, const(ubyte)[][] arg...); 271 272 // long rpushx(const(ubyte)[] key, const(ubyte)[][] arg...); 273 274 Long del(const(ubyte)[] key); 275 276 Long unlink(const(ubyte)[] key); 277 278 const(ubyte)[] echo(const(ubyte)[] arg); 279 280 Long move(const(ubyte)[] key, int dbIndex); 281 282 Long bitcount(const(ubyte)[] key); 283 284 Long bitcount(const(ubyte)[] key, long start, long end); 285 286 Long pfadd(const(ubyte)[] key, const(ubyte)[][] elements...); 287 288 Long pfcount(const(ubyte)[] key); 289 290 // // Geo Commands 291 292 // long geoadd(const(ubyte)[] key, double longitude, double latitude, const(ubyte)[] member); 293 294 // long geoadd(const(ubyte)[] key, Map!(const(ubyte)[], GeoCoordinate) memberCoordinateMap); 295 296 // Double geodist(const(ubyte)[] key, const(ubyte)[] member1, const(ubyte)[] member2); 297 298 // Double geodist(const(ubyte)[] key, const(ubyte)[] member1, const(ubyte)[] member2, GeoUnit unit); 299 300 // List!(const(ubyte)[]) geohash(const(ubyte)[] key, const(ubyte)[][] members...); 301 302 // List!(GeoCoordinate) geopos(const(ubyte)[] key, const(ubyte)[][] members...); 303 304 // List!(GeoRadiusResponse) georadius(const(ubyte)[] key, double longitude, double latitude, double radius, 305 // GeoUnit unit); 306 307 // List!(GeoRadiusResponse) georadiusReadonly(const(ubyte)[] key, double longitude, double latitude, double radius, 308 // GeoUnit unit); 309 310 // List!(GeoRadiusResponse) georadius(const(ubyte)[] key, double longitude, double latitude, double radius, 311 // GeoUnit unit, GeoRadiusParam param); 312 313 // List!(GeoRadiusResponse) georadiusReadonly(const(ubyte)[] key, double longitude, double latitude, double radius, 314 // GeoUnit unit, GeoRadiusParam param); 315 316 // List!(GeoRadiusResponse) georadiusByMember(const(ubyte)[] key, const(ubyte)[] member, double radius, GeoUnit unit); 317 318 // List!(GeoRadiusResponse) georadiusByMemberReadonly(const(ubyte)[] key, const(ubyte)[] member, double radius, GeoUnit unit); 319 320 // List!(GeoRadiusResponse) georadiusByMember(const(ubyte)[] key, const(ubyte)[] member, double radius, GeoUnit unit, 321 // GeoRadiusParam param); 322 323 // List!(GeoRadiusResponse) georadiusByMemberReadonly(const(ubyte)[] key, const(ubyte)[] member, double radius, GeoUnit unit, 324 // GeoRadiusParam param); 325 326 // ScanResult!(MapEntry!(const(ubyte)[], const(ubyte)[])) hscan(const(ubyte)[] key, const(ubyte)[] cursor); 327 328 // ScanResult!(MapEntry!(const(ubyte)[], const(ubyte)[])) hscan(const(ubyte)[] key, const(ubyte)[] cursor, ScanParams params); 329 330 // ScanResult!(const(ubyte)[]) sscan(const(ubyte)[] key, const(ubyte)[] cursor); 331 332 // ScanResult!(const(ubyte)[]) sscan(const(ubyte)[] key, const(ubyte)[] cursor, ScanParams params); 333 334 // ScanResult!(Tuple) zscan(const(ubyte)[] key, const(ubyte)[] cursor); 335 336 // ScanResult!(Tuple) zscan(const(ubyte)[] key, const(ubyte)[] cursor, ScanParams params); 337 338 // /** 339 // * Executes BITFIELD Redis command 340 // * @param key 341 // * @param arguments 342 // * @return 343 // */ 344 // List!(long) bitfield(const(ubyte)[] key, const(ubyte)[][] arguments...); 345 346 // /** 347 // * Used for HSTRLEN Redis command 348 // * @param key 349 // * @param field 350 // * @return lenth of the value for key 351 // */ 352 // long hstrlen(const(ubyte)[] key, const(ubyte)[] field); 353 354 355 // const(ubyte)[] xadd(const(ubyte)[] key, const(ubyte)[] id, Map!(const(ubyte)[], const(ubyte)[]) hash, long maxLen, bool approximateLength); 356 357 // long xlen(const(ubyte)[] key); 358 359 // List!(const(ubyte)[]) xrange(const(ubyte)[] key, const(ubyte)[] start, const(ubyte)[] end, long count); 360 361 // List!(const(ubyte)[]) xrevrange(const(ubyte)[] key, const(ubyte)[] end, const(ubyte)[] start, int count); 362 363 // long xack(const(ubyte)[] key, const(ubyte)[] group, const(ubyte)[][] ids...); 364 365 // string xgroupCreate(const(ubyte)[] key, const(ubyte)[] consumer, const(ubyte)[] id, bool makeStream); 366 367 // string xgroupSetID(const(ubyte)[] key, const(ubyte)[] consumer, const(ubyte)[] id); 368 369 // long xgroupDestroy(const(ubyte)[] key, const(ubyte)[] consumer); 370 371 // string xgroupDelConsumer(const(ubyte)[] key, const(ubyte)[] consumer, const(ubyte)[] consumerName); 372 373 // long xdel(const(ubyte)[] key, const(ubyte)[][] ids...); 374 375 // long xtrim(const(ubyte)[] key, long maxLen, bool approximateLength); 376 377 // List!(const(ubyte)[]) xpending(const(ubyte)[] key, const(ubyte)[] groupname, const(ubyte)[] start, const(ubyte)[] end, int count, const(ubyte)[] consumername); 378 379 // List!(const(ubyte)[]) xclaim(const(ubyte)[] key, const(ubyte)[] groupname, const(ubyte)[] consumername, long minIdleTime, long newIdleTime, int retries, bool force, const(ubyte)[][] ids); 380 381 // Object sendCommand(ProtocolCommand cmd, const(ubyte)[][] args...); 382 }