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.MultiKeyBinaryCommands;
13 
14 
15 import hunt.redis.BinaryRedisPubSub;
16 import hunt.redis.BitOP;
17 import hunt.redis.SortingParams;
18 import hunt.redis.ZParams;
19 
20 import hunt.collection.List;
21 import hunt.collection.Map;
22 import hunt.collection.Set;
23 
24 
25 interface MultiKeyBinaryCommands {
26     long del(const(ubyte)[][] keys...);
27 
28     long unlink(const(ubyte)[][] keys...);
29 
30     long exists(const(ubyte)[][] keys...);
31 
32     List!(const(ubyte)[]) blpop(int timeout, const(ubyte)[][] keys...);
33 
34     List!(const(ubyte)[]) brpop(int timeout, const(ubyte)[][] keys...);
35 
36     List!(const(ubyte)[]) blpop(const(ubyte)[][] args...);
37 
38     List!(const(ubyte)[]) brpop(const(ubyte)[][] args...);
39 
40     Set!(const(ubyte)[]) keys(const(ubyte)[] pattern);
41 
42     List!(const(ubyte)[]) mget(const(ubyte)[][] keys...);
43 
44     string mset(const(ubyte)[][] keysvalues...);
45 
46     long msetnx(const(ubyte)[][] keysvalues...);
47 
48     string rename(const(ubyte)[] oldkey, const(ubyte)[] newkey);
49 
50     long renamenx(const(ubyte)[] oldkey, const(ubyte)[] newkey);
51 
52     const(ubyte)[] rpoplpush(const(ubyte)[] srckey, const(ubyte)[] dstkey);
53 
54     Set!(const(ubyte)[]) sdiff(const(ubyte)[][] keys...);
55 
56     long sdiffstore(const(ubyte)[] dstkey, const(ubyte)[][] keys...);
57 
58     Set!(const(ubyte)[]) sinter(const(ubyte)[][] keys...);
59 
60     long sinterstore(const(ubyte)[] dstkey, const(ubyte)[][] keys...);
61 
62     long smove(const(ubyte)[] srckey, const(ubyte)[] dstkey, const(ubyte)[] member);
63 
64     long sort(const(ubyte)[] key, SortingParams sortingParameters, const(ubyte)[] dstkey);
65 
66     long sort(const(ubyte)[] key, const(ubyte)[] dstkey);
67 
68     Set!(const(ubyte)[]) sunion(const(ubyte)[][] keys...);
69 
70     long sunionstore(const(ubyte)[] dstkey, const(ubyte)[][] keys...);
71 
72     string watch(const(ubyte)[][] keys...);
73 
74     string unwatch();
75 
76     long zinterstore(const(ubyte)[] dstkey, const(ubyte)[][] sets...);
77 
78     long zinterstore(const(ubyte)[] dstkey, ZParams params, const(ubyte)[][] sets...);
79 
80     long zunionstore(const(ubyte)[] dstkey, const(ubyte)[][] sets...);
81 
82     long zunionstore(const(ubyte)[] dstkey, ZParams params, const(ubyte)[][] sets...);
83 
84     const(ubyte)[] brpoplpush(const(ubyte)[] source, const(ubyte)[] destination, int timeout);
85 
86     long publish(const(ubyte)[] channel, const(ubyte)[] message);
87 
88     void subscribe(BinaryRedisPubSub jedisPubSub, const(ubyte)[][] channels...);
89 
90     void psubscribe(BinaryRedisPubSub jedisPubSub, const(ubyte)[][] patterns...);
91 
92     const(ubyte)[] randomBinaryKey();
93 
94     long bitop(BitOP op, const(ubyte)[] destKey, const(ubyte)[][] srcKeys...);
95 
96     string pfmerge(const(ubyte)[] destkey, const(ubyte)[][] sourcekeys...);
97 
98     long pfcount(const(ubyte)[][] keys...);
99 
100     long touch(const(ubyte)[][] keys...);
101     
102     List!(const(ubyte)[]) xread(int count, long block, Map!(const(ubyte)[], const(ubyte)[]) streams);
103     
104     List!(const(ubyte)[]) xreadGroup(const(ubyte)[] groupname, const(ubyte)[] consumer, int count, long block, bool noAck, Map!(const(ubyte)[], const(ubyte)[]) streams);
105 }