Skip to content

Commit 71d64bc

Browse files
author
Jordan Hollinger
committed
Distributed sscan and sscan_each
1 parent 71efca9 commit 71d64bc

File tree

2 files changed

+35
-0
lines changed

2 files changed

+35
-0
lines changed

lib/redis/distributed.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -509,6 +509,16 @@ def smembers(key)
509509
node_for(key).smembers(key)
510510
end
511511

512+
# Scan a set
513+
def sscan(key, cursor, options={})
514+
node_for(key).sscan(key, cursor, options)
515+
end
516+
517+
# Scan a set and return an enumerator
518+
def sscan_each(key, options={}, &block)
519+
node_for(key).sscan_each(key, options, &block)
520+
end
521+
512522
# Subtract multiple sets.
513523
def sdiff(*keys)
514524
ensure_same_node(:sdiff, keys) do |node|

test/distributed_commands_on_sets_test.rb

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,4 +80,29 @@ def test_sdiffstore
8080
r.sdiffstore("baz", "foo", "bar")
8181
end
8282
end
83+
84+
def test_sscan
85+
assert_nothing_raised do
86+
r.sadd "foo", "s1"
87+
r.sadd "foo", "s2"
88+
r.sadd "bar", "s2"
89+
r.sadd "bar", "s3"
90+
91+
cursor, vals = r.sscan "foo", 0
92+
assert_equal '0', cursor
93+
assert_equal %w(s1 s2), vals.sort
94+
end
95+
end
96+
97+
def test_sscan_each
98+
assert_nothing_raised do
99+
r.sadd "foo", "s1"
100+
r.sadd "foo", "s2"
101+
r.sadd "bar", "s2"
102+
r.sadd "bar", "s3"
103+
104+
vals = r.sscan_each("foo").to_a
105+
assert_equal %w(s1 s2), vals.sort
106+
end
107+
end
83108
end

0 commit comments

Comments
 (0)