Skip to content

Commit dbcdaf9

Browse files
committed
Simplify list persistence on RedisInterface
1 parent fcd51dc commit dbcdaf9

File tree

2 files changed

+6
-79
lines changed

2 files changed

+6
-79
lines changed

lib/split/redis_interface.rb

Lines changed: 6 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -7,34 +7,16 @@ def initialize
77
end
88

99
def persist_list(list_name, list_values)
10-
max_index = list_length(list_name) - 1
11-
list_values.each_with_index do |value, index|
12-
if index > max_index
13-
add_to_list(list_name, value)
14-
else
15-
set_list_index(list_name, index, value)
16-
end
10+
return list_values if list_values.empty?
11+
12+
redis.multi do |multi|
13+
tmp_list = "#{list_name}_tmp"
14+
multi.rpush(tmp_list, list_values)
15+
multi.rename(tmp_list, list_name)
1716
end
18-
make_list_length(list_name, list_values.length)
1917
list_values
2018
end
2119

22-
def add_to_list(list_name, value)
23-
redis.rpush(list_name, value)
24-
end
25-
26-
def set_list_index(list_name, index, value)
27-
redis.lset(list_name, index, value)
28-
end
29-
30-
def list_length(list_name)
31-
redis.llen(list_name)
32-
end
33-
34-
def make_list_length(list_name, new_length)
35-
redis.ltrim(list_name, 0, new_length - 1)
36-
end
37-
3820
def add_to_set(set_name, value)
3921
redis.sadd(set_name, value) unless redis.sismember(set_name, value)
4022
end

spec/redis_interface_spec.rb

Lines changed: 0 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -29,61 +29,6 @@
2929
end
3030
end
3131

32-
describe '#add_to_list' do
33-
subject(:add_to_list) do
34-
interface.add_to_list(list_name, 'y')
35-
interface.add_to_list(list_name, 'z')
36-
end
37-
38-
specify do
39-
add_to_list
40-
expect(Split.redis.lindex(list_name, 0)).to eq 'y'
41-
expect(Split.redis.lindex(list_name, 1)).to eq 'z'
42-
expect(Split.redis.llen(list_name)).to eq 2
43-
end
44-
end
45-
46-
describe '#set_list_index' do
47-
subject(:set_list_index) do
48-
interface.add_to_list(list_name, 'y')
49-
interface.add_to_list(list_name, 'z')
50-
interface.set_list_index(list_name, 0, 'a')
51-
end
52-
53-
specify do
54-
set_list_index
55-
expect(Split.redis.lindex(list_name, 0)).to eq 'a'
56-
expect(Split.redis.lindex(list_name, 1)).to eq 'z'
57-
expect(Split.redis.llen(list_name)).to eq 2
58-
end
59-
end
60-
61-
describe '#list_length' do
62-
subject(:list_length) do
63-
interface.add_to_list(list_name, 'y')
64-
interface.add_to_list(list_name, 'z')
65-
interface.list_length(list_name)
66-
end
67-
68-
specify do
69-
expect(list_length).to eq 2
70-
end
71-
end
72-
73-
describe '#make_list_length' do
74-
subject(:make_list_length) do
75-
interface.add_to_list(list_name, 'y')
76-
interface.add_to_list(list_name, 'z')
77-
interface.make_list_length(list_name, 1)
78-
end
79-
80-
specify do
81-
make_list_length
82-
expect(Split.redis.lindex(list_name, 0)).to eq 'y'
83-
expect(Split.redis.llen(list_name)).to eq 1
84-
end
85-
end
86-
8732
describe '#add_to_set' do
8833
subject(:add_to_set) do
8934
interface.add_to_set(set_name, 'something')

0 commit comments

Comments
 (0)