lite-redis 1.2.0 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +5 -2
- data/CHANGELOG.md +6 -20
- data/Gemfile +1 -1
- data/Gemfile.lock +29 -29
- data/README.md +12 -19
- data/Rakefile +2 -2
- data/bin/console +3 -3
- data/docs/CONNECTION.md +8 -4
- data/docs/GEO.md +8 -4
- data/docs/HASH.md +8 -4
- data/docs/HYPER_LOG_LOG.md +7 -3
- data/docs/KEY.md +7 -3
- data/docs/LIST.md +7 -3
- data/docs/PUB_SUB.md +6 -2
- data/docs/SCRIPT.md +7 -3
- data/docs/SET.md +7 -3
- data/docs/SORTED_SET.md +8 -4
- data/docs/STRING.md +7 -3
- data/docs/TRANSACTION.md +8 -4
- data/lib/generators/lite/redis/install_generator.rb +2 -2
- data/lib/lite/redis/base.rb +53 -2
- data/lib/lite/redis/configuration.rb +2 -0
- data/lib/lite/redis/connection.rb +96 -3
- data/lib/lite/redis/geo.rb +24 -3
- data/lib/lite/redis/hash.rb +60 -3
- data/lib/lite/redis/hyper_log_log.rb +12 -3
- data/lib/lite/redis/key.rb +86 -3
- data/lib/lite/redis/list.rb +124 -3
- data/lib/lite/redis/pub_sub.rb +36 -3
- data/lib/lite/redis/railtie.rb +1 -1
- data/lib/lite/redis/script.rb +12 -3
- data/lib/lite/redis/set.rb +60 -3
- data/lib/lite/redis/sorted_set.rb +127 -3
- data/lib/lite/redis/string.rb +87 -3
- data/lib/lite/redis/transaction.rb +20 -3
- data/lib/lite/redis/version.rb +1 -1
- data/lib/lite/redis.rb +17 -32
- data/lib/tasks/redis.rake +10 -10
- data/lite-redis.gemspec +27 -34
- metadata +7 -16
- data/lib/lite/redis/helpers/base_helper.rb +0 -41
- data/lib/lite/redis/helpers/connection_helper.rb +0 -105
- data/lib/lite/redis/helpers/geo_helper.rb +0 -33
- data/lib/lite/redis/helpers/hash_helper.rb +0 -69
- data/lib/lite/redis/helpers/hyper_log_log_helper.rb +0 -21
- data/lib/lite/redis/helpers/key_helper.rb +0 -95
- data/lib/lite/redis/helpers/list_helper.rb +0 -133
- data/lib/lite/redis/helpers/pub_sub_helper.rb +0 -45
- data/lib/lite/redis/helpers/script_helper.rb +0 -21
- data/lib/lite/redis/helpers/set_helper.rb +0 -69
- data/lib/lite/redis/helpers/sorted_set_helper.rb +0 -136
- data/lib/lite/redis/helpers/string_helper.rb +0 -96
- data/lib/lite/redis/helpers/transaction_helper.rb +0 -29
data/lib/lite/redis/base.rb
CHANGED
@@ -4,8 +4,59 @@ module Lite
|
|
4
4
|
module Redis
|
5
5
|
class Base
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
attr_writer :client
|
8
|
+
|
9
|
+
def initialize(redis = nil)
|
10
|
+
@client = redis
|
11
|
+
end
|
12
|
+
|
13
|
+
class << self
|
14
|
+
|
15
|
+
def method_missing(method_name, *args, **kwargs, &block)
|
16
|
+
instance = new
|
17
|
+
|
18
|
+
if instance.respond_to_method?(method_name)
|
19
|
+
instance.send(method_name, *args, **kwargs, &block)
|
20
|
+
else
|
21
|
+
super
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
def client
|
28
|
+
@client ||= Lite::Redis.configuration.client
|
29
|
+
end
|
30
|
+
|
31
|
+
def respond_to_method?(method_name)
|
32
|
+
public_methods.include?(method_name)
|
33
|
+
end
|
34
|
+
|
35
|
+
def respond_to_missing?(method_name, include_private = false)
|
36
|
+
respond_to_method?(method_name) || super
|
37
|
+
end
|
38
|
+
|
39
|
+
private
|
40
|
+
|
41
|
+
def append?(order)
|
42
|
+
order.to_s == "append"
|
43
|
+
end
|
44
|
+
|
45
|
+
def milliseconds?(format)
|
46
|
+
format.to_s == "milliseconds"
|
47
|
+
end
|
48
|
+
|
49
|
+
def prepend?(order)
|
50
|
+
order.to_s == "prepend"
|
51
|
+
end
|
52
|
+
|
53
|
+
def seconds?(format)
|
54
|
+
format.to_s == "seconds"
|
55
|
+
end
|
56
|
+
|
57
|
+
def stringify_keys(*keys)
|
58
|
+
keys.map { |key, _| key.to_s }
|
59
|
+
end
|
9
60
|
|
10
61
|
end
|
11
62
|
end
|
@@ -2,10 +2,103 @@
|
|
2
2
|
|
3
3
|
module Lite
|
4
4
|
module Redis
|
5
|
-
class Connection <
|
5
|
+
class Connection < Base
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
def authenticate(password)
|
8
|
+
client.auth(password)
|
9
|
+
end
|
10
|
+
|
11
|
+
def connected?
|
12
|
+
client.connected?
|
13
|
+
end
|
14
|
+
|
15
|
+
def database(index)
|
16
|
+
client.select(index)
|
17
|
+
end
|
18
|
+
|
19
|
+
def database_id
|
20
|
+
client.database_id
|
21
|
+
end
|
22
|
+
|
23
|
+
def database_size
|
24
|
+
client.dbsize
|
25
|
+
end
|
26
|
+
|
27
|
+
def debug(*args)
|
28
|
+
client.debug(*args)
|
29
|
+
end
|
30
|
+
|
31
|
+
def disconnect
|
32
|
+
client.disconnect
|
33
|
+
end
|
34
|
+
|
35
|
+
def echo(message)
|
36
|
+
client.echo(message)
|
37
|
+
end
|
38
|
+
|
39
|
+
def flush
|
40
|
+
client.flushdb
|
41
|
+
end
|
42
|
+
|
43
|
+
def flush_all
|
44
|
+
client.flushall
|
45
|
+
end
|
46
|
+
|
47
|
+
def info
|
48
|
+
client.info
|
49
|
+
end
|
50
|
+
|
51
|
+
def ping
|
52
|
+
client.ping
|
53
|
+
end
|
54
|
+
|
55
|
+
def quit
|
56
|
+
client.quit
|
57
|
+
end
|
58
|
+
|
59
|
+
def reconnect
|
60
|
+
client.reconnect
|
61
|
+
end
|
62
|
+
|
63
|
+
def rewrite_aof
|
64
|
+
client.bgrewriteaof
|
65
|
+
end
|
66
|
+
|
67
|
+
def save
|
68
|
+
client.bgsave
|
69
|
+
end
|
70
|
+
|
71
|
+
def saved_at
|
72
|
+
client.lastsave
|
73
|
+
end
|
74
|
+
|
75
|
+
def shutdown
|
76
|
+
client.shutdown
|
77
|
+
end
|
78
|
+
|
79
|
+
def slave_of(host, port)
|
80
|
+
client.slaveof(host, port)
|
81
|
+
end
|
82
|
+
|
83
|
+
def slowlog(command, length = nil)
|
84
|
+
client.slowlog(command, length)
|
85
|
+
end
|
86
|
+
|
87
|
+
def synchronize
|
88
|
+
client.synchronize
|
89
|
+
end
|
90
|
+
|
91
|
+
def time
|
92
|
+
client.time
|
93
|
+
end
|
94
|
+
|
95
|
+
def with_reconnect(&block)
|
96
|
+
client.with_reconnect(true, &block)
|
97
|
+
end
|
98
|
+
|
99
|
+
def without_reconnect(&block)
|
100
|
+
client.with_reconnect(false, &block)
|
101
|
+
end
|
9
102
|
|
10
103
|
end
|
11
104
|
end
|
data/lib/lite/redis/geo.rb
CHANGED
@@ -2,10 +2,31 @@
|
|
2
2
|
|
3
3
|
module Lite
|
4
4
|
module Redis
|
5
|
-
class Geo <
|
5
|
+
class Geo < Base
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
def create(key, *member)
|
8
|
+
client.geoadd(key.to_s, *member)
|
9
|
+
end
|
10
|
+
|
11
|
+
def hash(key, member)
|
12
|
+
client.geohash(key.to_s, member)
|
13
|
+
end
|
14
|
+
|
15
|
+
def position(key, member)
|
16
|
+
client.geopos(key.to_s, member)
|
17
|
+
end
|
18
|
+
|
19
|
+
def distance(key, member1, member2, unit = "m")
|
20
|
+
client.geodist(key.to_s, member1, member2, unit.to_s)
|
21
|
+
end
|
22
|
+
|
23
|
+
def radius(*args, **geoptions)
|
24
|
+
client.georadius(*args, **geoptions)
|
25
|
+
end
|
26
|
+
|
27
|
+
def radius_member(*args, **geoptions)
|
28
|
+
client.georadiusbymember(*args, **geoptions)
|
29
|
+
end
|
9
30
|
|
10
31
|
end
|
11
32
|
end
|
data/lib/lite/redis/hash.rb
CHANGED
@@ -2,10 +2,67 @@
|
|
2
2
|
|
3
3
|
module Lite
|
4
4
|
module Redis
|
5
|
-
class Hash <
|
5
|
+
class Hash < Base
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
def find(key, field)
|
8
|
+
client.hget(key.to_s, field)
|
9
|
+
end
|
10
|
+
|
11
|
+
def find_each(key, *args)
|
12
|
+
client.hmget(key.to_s, *args)
|
13
|
+
end
|
14
|
+
|
15
|
+
def all(key)
|
16
|
+
client.hgetall(key.to_s)
|
17
|
+
end
|
18
|
+
|
19
|
+
def keys(key)
|
20
|
+
client.hkeys(key.to_s)
|
21
|
+
end
|
22
|
+
|
23
|
+
def values(key)
|
24
|
+
client.hvals(key.to_s)
|
25
|
+
end
|
26
|
+
|
27
|
+
def value_length(key, field)
|
28
|
+
client.hstrlen(key.to_s, field)
|
29
|
+
end
|
30
|
+
|
31
|
+
def count(key)
|
32
|
+
client.hlen(key.to_s)
|
33
|
+
end
|
34
|
+
|
35
|
+
def exists?(key, field)
|
36
|
+
client.hexists(key.to_s, field)
|
37
|
+
end
|
38
|
+
|
39
|
+
def create(key, field, value)
|
40
|
+
client.hset(key.to_s, field, value)
|
41
|
+
end
|
42
|
+
|
43
|
+
def create!(key, field, value)
|
44
|
+
client.hsetnx(key.to_s, field, value)
|
45
|
+
end
|
46
|
+
|
47
|
+
def create_each(key, *args)
|
48
|
+
client.hmset(key.to_s, *args)
|
49
|
+
end
|
50
|
+
|
51
|
+
def increment(key, field, value)
|
52
|
+
if value.is_a?(Float)
|
53
|
+
client.hincrbyfloat(key.to_s, field, value)
|
54
|
+
else
|
55
|
+
client.hincrby(key.to_s, field, value)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def destroy(key, *args)
|
60
|
+
client.hdel(key.to_s, *args)
|
61
|
+
end
|
62
|
+
|
63
|
+
def scan(key, cursor, opts = {})
|
64
|
+
client.hdel(key.to_s, cursor, **opts)
|
65
|
+
end
|
9
66
|
|
10
67
|
end
|
11
68
|
end
|
@@ -2,10 +2,19 @@
|
|
2
2
|
|
3
3
|
module Lite
|
4
4
|
module Redis
|
5
|
-
class HyperLogLog <
|
5
|
+
class HyperLogLog < Base
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
def create(key, member)
|
8
|
+
client.pfadd(key.to_s, member)
|
9
|
+
end
|
10
|
+
|
11
|
+
def count(*args)
|
12
|
+
client.pfcount(*args)
|
13
|
+
end
|
14
|
+
|
15
|
+
def merge(key, *keys)
|
16
|
+
client.pfmerge(key.to_s, *keys)
|
17
|
+
end
|
9
18
|
|
10
19
|
end
|
11
20
|
end
|
data/lib/lite/redis/key.rb
CHANGED
@@ -2,10 +2,93 @@
|
|
2
2
|
|
3
3
|
module Lite
|
4
4
|
module Redis
|
5
|
-
class Key <
|
5
|
+
class Key < Base
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
def exists?(key)
|
8
|
+
client.exists(key.to_s)
|
9
|
+
end
|
10
|
+
|
11
|
+
def type?(key)
|
12
|
+
client.type(key.to_s)
|
13
|
+
end
|
14
|
+
|
15
|
+
def ttl?(key, format = :seconds)
|
16
|
+
if seconds?(format)
|
17
|
+
client.ttl(key.to_s)
|
18
|
+
else
|
19
|
+
client.pttl(key.to_s)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def sort(key, opts = {})
|
24
|
+
client.sort(key.to_s, **opts)
|
25
|
+
end
|
26
|
+
|
27
|
+
def sample
|
28
|
+
client.randomkey
|
29
|
+
end
|
30
|
+
|
31
|
+
def rename(key, value)
|
32
|
+
client.rename(key.to_s, value.to_s)
|
33
|
+
end
|
34
|
+
|
35
|
+
def rename!(key, value)
|
36
|
+
client.renamenx(key.to_s, value.to_s)
|
37
|
+
end
|
38
|
+
|
39
|
+
def destroy(key)
|
40
|
+
client.del(key.to_s)
|
41
|
+
end
|
42
|
+
|
43
|
+
def persist(key)
|
44
|
+
client.persist(key.to_s)
|
45
|
+
end
|
46
|
+
|
47
|
+
def expire(key, seconds, format = :seconds)
|
48
|
+
if seconds?(format)
|
49
|
+
client.expire(key.to_s, seconds)
|
50
|
+
else
|
51
|
+
client.pexpire(key.to_s, seconds)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
alias expire_in expire
|
56
|
+
|
57
|
+
def expire_at(key, seconds, format = :seconds)
|
58
|
+
if seconds?(format)
|
59
|
+
client.expireat(key.to_s, seconds)
|
60
|
+
else
|
61
|
+
client.pexpireat(key.to_s, seconds)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
def dump(key)
|
66
|
+
client.dump(key.to_s)
|
67
|
+
end
|
68
|
+
|
69
|
+
def match(pattern = "*")
|
70
|
+
client.keys(pattern.to_s)
|
71
|
+
end
|
72
|
+
|
73
|
+
def migrate(key, options)
|
74
|
+
client.migrate(key.to_s, options)
|
75
|
+
end
|
76
|
+
|
77
|
+
def move(key, destination)
|
78
|
+
client.move(key.to_s, destination)
|
79
|
+
end
|
80
|
+
|
81
|
+
def object(*args)
|
82
|
+
client.object(*args)
|
83
|
+
end
|
84
|
+
|
85
|
+
def restore(key, milliseconds, value)
|
86
|
+
client.restore(key.to_s, milliseconds, value)
|
87
|
+
end
|
88
|
+
|
89
|
+
def scan(cursor, opts = {})
|
90
|
+
client.scan(cursor, **opts)
|
91
|
+
end
|
9
92
|
|
10
93
|
end
|
11
94
|
end
|
data/lib/lite/redis/list.rb
CHANGED
@@ -2,10 +2,131 @@
|
|
2
2
|
|
3
3
|
module Lite
|
4
4
|
module Redis
|
5
|
-
class List <
|
5
|
+
class List < Base
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
def find(key, position = 1)
|
8
|
+
client.lindex(key.to_s, position - 1)
|
9
|
+
end
|
10
|
+
|
11
|
+
def first(key, limit = 1)
|
12
|
+
value = client.lrange(key.to_s, 0, -1)
|
13
|
+
return value.first if limit == 1
|
14
|
+
|
15
|
+
value.first(limit)
|
16
|
+
end
|
17
|
+
|
18
|
+
def last(key, limit = 1)
|
19
|
+
value = client.lrange(key.to_s, 0, -1)
|
20
|
+
return value.last if limit == 1
|
21
|
+
|
22
|
+
value.last(limit)
|
23
|
+
end
|
24
|
+
|
25
|
+
def between(key, start = 1, finish = 0)
|
26
|
+
client.lrange(key.to_s, start - 1, finish - 1)
|
27
|
+
end
|
28
|
+
|
29
|
+
def all(key)
|
30
|
+
client.lrange(key.to_s, 0, -1)
|
31
|
+
end
|
32
|
+
|
33
|
+
def count(key)
|
34
|
+
client.llen(key.to_s)
|
35
|
+
end
|
36
|
+
|
37
|
+
def create(key, value, order = :prepend)
|
38
|
+
if append?(order)
|
39
|
+
client.rpush(key.to_s, value)
|
40
|
+
else
|
41
|
+
client.lpush(key.to_s, value)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def create!(key, value, order = :prepend)
|
46
|
+
if append?(order)
|
47
|
+
client.rpushx(key.to_s, value)
|
48
|
+
else
|
49
|
+
client.lpushx(key.to_s, value)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def create_limit(key, value, limit, order = :prepend)
|
54
|
+
if append?(order)
|
55
|
+
client.rpush(key.to_s, value)
|
56
|
+
else
|
57
|
+
client.lpush(key.to_s, value)
|
58
|
+
end
|
59
|
+
|
60
|
+
client.ltrim(key.to_s, 0, limit - 1)
|
61
|
+
end
|
62
|
+
|
63
|
+
def create_limit!(key, value, limit, order = :prepend)
|
64
|
+
if append?(order)
|
65
|
+
client.rpushx(key.to_s, value)
|
66
|
+
else
|
67
|
+
client.lpushx(key.to_s, value)
|
68
|
+
end
|
69
|
+
|
70
|
+
client.ltrim(key.to_s, 0, limit - 1)
|
71
|
+
end
|
72
|
+
|
73
|
+
def create_before(key, pivot, value)
|
74
|
+
client.linsert(key.to_s, :before, pivot, value)
|
75
|
+
end
|
76
|
+
|
77
|
+
def create_after(key, pivot, value)
|
78
|
+
client.linsert(key.to_s, :after, pivot, value)
|
79
|
+
end
|
80
|
+
|
81
|
+
def update(key, index, value)
|
82
|
+
client.lset(key.to_s, index, value)
|
83
|
+
end
|
84
|
+
|
85
|
+
def move(key, desination)
|
86
|
+
client.rpoplpush(key.to_s, desination.to_s)
|
87
|
+
end
|
88
|
+
|
89
|
+
def move_blocking(key, desination)
|
90
|
+
brpoplpush(key.to_s, desination.to_s)
|
91
|
+
end
|
92
|
+
|
93
|
+
def destroy(key, count, value)
|
94
|
+
client.lrem(key.to_s, count, value)
|
95
|
+
end
|
96
|
+
|
97
|
+
def destroy_first(key, limit = 1)
|
98
|
+
client.ltrim(key.to_s, limit, -1)
|
99
|
+
end
|
100
|
+
|
101
|
+
def destroy_last(key, limit = 1)
|
102
|
+
client.ltrim(key.to_s, 0, -(limit + 1))
|
103
|
+
end
|
104
|
+
|
105
|
+
def destroy_except(key, start, finish)
|
106
|
+
client.ltrim(key.to_s, start - 1, finish - 1)
|
107
|
+
end
|
108
|
+
|
109
|
+
def destroy_all(key)
|
110
|
+
client.ltrim(key.to_s, -1, 0)
|
111
|
+
end
|
112
|
+
|
113
|
+
def pop(key, order = :prepend)
|
114
|
+
if append?(order)
|
115
|
+
client.rpop(key)
|
116
|
+
else
|
117
|
+
client.lpop(key)
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
def pop_blocking(keys, opts = {})
|
122
|
+
timeout = opts[:timeout] || 0
|
123
|
+
|
124
|
+
if append?(opts[:order] || :prepend)
|
125
|
+
client.brpop(keys, timeout)
|
126
|
+
else
|
127
|
+
client.blpop(keys, timeout)
|
128
|
+
end
|
129
|
+
end
|
9
130
|
|
10
131
|
end
|
11
132
|
end
|
data/lib/lite/redis/pub_sub.rb
CHANGED
@@ -2,10 +2,43 @@
|
|
2
2
|
|
3
3
|
module Lite
|
4
4
|
module Redis
|
5
|
-
class PubSub <
|
5
|
+
class PubSub < Base
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
def publish(channel, message)
|
8
|
+
client.publish(channel, message)
|
9
|
+
end
|
10
|
+
|
11
|
+
def subscribed?
|
12
|
+
client.subscribed?
|
13
|
+
end
|
14
|
+
|
15
|
+
def subscribe(*channels, timeout: nil, &block)
|
16
|
+
if timeout.nil?
|
17
|
+
client.subscribe(*channels, &block)
|
18
|
+
else
|
19
|
+
client.subscribe_with_timeout(timeout, *channels, &block)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def unsubscribe(*channels)
|
24
|
+
client.unsubscribe(*channels)
|
25
|
+
end
|
26
|
+
|
27
|
+
def match_subscribe(*channels, timeout: nil, &block)
|
28
|
+
if timeout.nil?
|
29
|
+
client.psubscribe(*channels, &block)
|
30
|
+
else
|
31
|
+
client.psubscribe_with_timeout(timeout, *channels, &block)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def match_unsubscribe(*channels)
|
36
|
+
client.punsubscribe(*channels)
|
37
|
+
end
|
38
|
+
|
39
|
+
def state(command, *args)
|
40
|
+
client.pubsub(command, *args)
|
41
|
+
end
|
9
42
|
|
10
43
|
end
|
11
44
|
end
|
data/lib/lite/redis/railtie.rb
CHANGED
data/lib/lite/redis/script.rb
CHANGED
@@ -2,10 +2,19 @@
|
|
2
2
|
|
3
3
|
module Lite
|
4
4
|
module Redis
|
5
|
-
class Script <
|
5
|
+
class Script < Base
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
def script(command, *args)
|
8
|
+
client.script(command, *args)
|
9
|
+
end
|
10
|
+
|
11
|
+
def eval(*args)
|
12
|
+
client.eval(:eval, *args)
|
13
|
+
end
|
14
|
+
|
15
|
+
def evalsha(*args)
|
16
|
+
client.eval(:evalsha, *args)
|
17
|
+
end
|
9
18
|
|
10
19
|
end
|
11
20
|
end
|
data/lib/lite/redis/set.rb
CHANGED
@@ -2,10 +2,67 @@
|
|
2
2
|
|
3
3
|
module Lite
|
4
4
|
module Redis
|
5
|
-
class Set <
|
5
|
+
class Set < Base
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
def find(key)
|
8
|
+
client.smembers(key.to_s)
|
9
|
+
end
|
10
|
+
|
11
|
+
def combine(*args)
|
12
|
+
client.sunion(*args)
|
13
|
+
end
|
14
|
+
|
15
|
+
def difference(*args)
|
16
|
+
client.sdiff(*args)
|
17
|
+
end
|
18
|
+
|
19
|
+
def intersection(key, *args)
|
20
|
+
client.sinter(key.to_s, *args)
|
21
|
+
end
|
22
|
+
|
23
|
+
def sample(key, value = 1)
|
24
|
+
client.srandmember(key.to_s, value)
|
25
|
+
end
|
26
|
+
|
27
|
+
def value?(key, value)
|
28
|
+
client.sismember(key.to_s, value)
|
29
|
+
end
|
30
|
+
|
31
|
+
def count(key)
|
32
|
+
client.scard(key.to_s)
|
33
|
+
end
|
34
|
+
|
35
|
+
def create(key, args)
|
36
|
+
client.sadd?(key.to_s, args)
|
37
|
+
end
|
38
|
+
|
39
|
+
def create_combination(key, *args)
|
40
|
+
client.sunionstore(key.to_s, *args)
|
41
|
+
end
|
42
|
+
|
43
|
+
def create_difference(key, *args)
|
44
|
+
client.sdiffstore(key.to_s, *args)
|
45
|
+
end
|
46
|
+
|
47
|
+
def create_intersection(key, *args)
|
48
|
+
client.sinterstore(key.to_s, *args)
|
49
|
+
end
|
50
|
+
|
51
|
+
def move(key, destination, value)
|
52
|
+
client.smove(key.to_s, destination.to_s, value)
|
53
|
+
end
|
54
|
+
|
55
|
+
def destroy(key, args)
|
56
|
+
client.srem?(key.to_s, args)
|
57
|
+
end
|
58
|
+
|
59
|
+
def destroy_random(key)
|
60
|
+
client.spop(key.to_s)
|
61
|
+
end
|
62
|
+
|
63
|
+
def scan(key, cursor, opts = {})
|
64
|
+
client.sscan(key.to_s, cursor, **opts)
|
65
|
+
end
|
9
66
|
|
10
67
|
end
|
11
68
|
end
|