rediska 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +19 -0
- data/.rspec +3 -0
- data/.travis.yml +4 -0
- data/Gemfile +7 -0
- data/Gemfile.lock +70 -0
- data/LICENSE +20 -0
- data/README.md +95 -0
- data/Rakefile +7 -0
- data/lib/rediska/configuration.rb +11 -0
- data/lib/rediska/connection.rb +67 -0
- data/lib/rediska/databases/expiring.rb +87 -0
- data/lib/rediska/databases/memory.rb +21 -0
- data/lib/rediska/databases/pstore.rb +72 -0
- data/lib/rediska/driver.rb +910 -0
- data/lib/rediska/sorted_set_argument_handler.rb +54 -0
- data/lib/rediska/sorted_set_store.rb +80 -0
- data/lib/rediska/version.rb +3 -0
- data/lib/rediska/zset.rb +26 -0
- data/lib/rediska.rb +18 -0
- data/rediska.gemspec +26 -0
- data/spec/redis_spec.rb +64 -0
- data/spec/spec_helper.rb +15 -0
- data/spec/support/compatibility.rb +7 -0
- data/spec/support/connection.rb +65 -0
- data/spec/support/hashes.rb +189 -0
- data/spec/support/keys.rb +261 -0
- data/spec/support/lists.rb +196 -0
- data/spec/support/server.rb +93 -0
- data/spec/support/sets.rb +175 -0
- data/spec/support/sorted_sets.rb +447 -0
- data/spec/support/strings.rb +240 -0
- data/spec/support/transactions.rb +11 -0
- data/spec/support/upcase_method_names.rb +9 -0
- metadata +174 -0
@@ -0,0 +1,261 @@
|
|
1
|
+
shared_examples 'keys' do
|
2
|
+
it 'should delete a key' do
|
3
|
+
subject.set('key1', '1')
|
4
|
+
subject.set('key2', '2')
|
5
|
+
subject.del('key1', 'key2')
|
6
|
+
|
7
|
+
subject.get('key1').should be_nil
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'should delete multiple keys' do
|
11
|
+
subject.set('key1', '1')
|
12
|
+
subject.set('key2', '2')
|
13
|
+
subject.del(['key1', 'key2'])
|
14
|
+
|
15
|
+
subject.get('key1').should be_nil
|
16
|
+
subject.get('key2').should be_nil
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'should error deleting no keys' do
|
20
|
+
expect {
|
21
|
+
subject.del
|
22
|
+
}.to raise_error(Redis::CommandError)
|
23
|
+
|
24
|
+
expect {
|
25
|
+
subject.del []
|
26
|
+
}.to raise_error(Redis::CommandError)
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'should determine if a key exists' do
|
30
|
+
subject.set('key1', '1')
|
31
|
+
|
32
|
+
subject.exists('key1').should be_true
|
33
|
+
subject.exists('key2').should be_false
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should set a key's time to live in seconds" do
|
37
|
+
subject.set('key1', '1')
|
38
|
+
subject.expire('key1', 1)
|
39
|
+
|
40
|
+
subject.ttl('key1').should eq(1)
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should set the expiration for a key as a UNIX timestamp" do
|
44
|
+
subject.set('key1', '1')
|
45
|
+
subject.expireat('key1', Time.now.to_i + 100)
|
46
|
+
|
47
|
+
subject.ttl('key1').should_not eq(-1)
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'should not have an expiration after re-set' do
|
51
|
+
subject.set('key1', '1')
|
52
|
+
subject.expireat('key1', Time.now.to_i + 2)
|
53
|
+
subject.set('key1', '1')
|
54
|
+
|
55
|
+
subject.ttl('key1').should eq(-1)
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'should not have a ttl if expired' do
|
59
|
+
subject.set('key1', '1')
|
60
|
+
subject.expireat('key1', Time.now.to_i)
|
61
|
+
|
62
|
+
subject.ttl('key1').should eq(-1)
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'should not find a key if expired' do
|
66
|
+
subject.set('key1', '1')
|
67
|
+
subject.expireat('key1', Time.now.to_i)
|
68
|
+
|
69
|
+
subject.get('key1').should be_nil
|
70
|
+
end
|
71
|
+
|
72
|
+
it 'should not find multiple keys if expired' do
|
73
|
+
subject.set('key1', '1')
|
74
|
+
subject.set('key2', '2')
|
75
|
+
subject.expireat('key1', Time.now.to_i)
|
76
|
+
|
77
|
+
subject.mget('key1', 'key2').should eq([nil, '2'])
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'should only find keys that are not expired' do
|
81
|
+
subject.set('key1', '1')
|
82
|
+
subject.set('key2', '2')
|
83
|
+
subject.expireat('key1', Time.now.to_i)
|
84
|
+
|
85
|
+
subject.keys.should eq(['key2'])
|
86
|
+
end
|
87
|
+
|
88
|
+
it 'should not exist if expired' do
|
89
|
+
subject.set('key1', '1')
|
90
|
+
subject.expireat('key1', Time.now.to_i)
|
91
|
+
|
92
|
+
subject.exists('key1').should be_false
|
93
|
+
end
|
94
|
+
|
95
|
+
it 'should find all keys matching the given pattern' do
|
96
|
+
subject.set('key:a', '1')
|
97
|
+
subject.set('key:b', '2')
|
98
|
+
subject.set('key:c', '3')
|
99
|
+
subject.set('akeyd', '4')
|
100
|
+
subject.set('key1', '5')
|
101
|
+
|
102
|
+
subject.mset('database', 1, 'above', 2, 'suitability', 3, 'able', 4)
|
103
|
+
|
104
|
+
subject.keys('key:*').should =~ ['key:a', 'key:b', 'key:c']
|
105
|
+
subject.keys('ab*').should =~ ['above', 'able']
|
106
|
+
end
|
107
|
+
|
108
|
+
it 'should remove the expiration from a key' do
|
109
|
+
subject.set('key1', '1')
|
110
|
+
subject.expireat('key1', Time.now.to_i + 1)
|
111
|
+
subject.persist('key1').should be_true
|
112
|
+
subject.persist('key1').should be_false
|
113
|
+
|
114
|
+
subject.ttl('key1').should eq(-1)
|
115
|
+
end
|
116
|
+
|
117
|
+
it 'should return a random key from the keyspace' do
|
118
|
+
subject.set('key1', '1')
|
119
|
+
subject.set('key2', '2')
|
120
|
+
|
121
|
+
['key1', 'key2'].should include(subject.randomkey)
|
122
|
+
end
|
123
|
+
|
124
|
+
it 'should rename a key' do
|
125
|
+
subject.set('key1', '2')
|
126
|
+
subject.rename('key1', 'key2')
|
127
|
+
|
128
|
+
subject.get('key1').should be_nil
|
129
|
+
subject.get('key2').should eq('2')
|
130
|
+
end
|
131
|
+
|
132
|
+
it 'should rename a key, only if new key does not exist' do
|
133
|
+
subject.set('key1', '1')
|
134
|
+
subject.set('key2', '2')
|
135
|
+
subject.set('key3', '3')
|
136
|
+
subject.renamenx('key1', 'key2')
|
137
|
+
subject.renamenx('key3', 'key4')
|
138
|
+
|
139
|
+
subject.get('key1').should eq('1')
|
140
|
+
subject.get('key2').should eq('2')
|
141
|
+
subject.get('key3').should be_nil
|
142
|
+
subject.get('key4').should eq('3')
|
143
|
+
end
|
144
|
+
|
145
|
+
it 'should sort the elements in a list, set or sorted set' do
|
146
|
+
pending 'SORT Command not implemented yet'
|
147
|
+
end
|
148
|
+
|
149
|
+
it 'should determine the type stored at key' do
|
150
|
+
subject.set('key1', '1')
|
151
|
+
|
152
|
+
subject.type('key1').should eq('string')
|
153
|
+
subject.type('key0').should eq('none')
|
154
|
+
end
|
155
|
+
|
156
|
+
it 'should convert the value into a string before storing' do
|
157
|
+
subject.set('key1', 1)
|
158
|
+
subject.get('key1').should eq('1')
|
159
|
+
|
160
|
+
subject.setex('key2', 30, 1)
|
161
|
+
subject.get('key2').should eq('1')
|
162
|
+
|
163
|
+
subject.getset('key3', 1)
|
164
|
+
subject.get('key3').should eq('1')
|
165
|
+
end
|
166
|
+
|
167
|
+
it "should return 'OK' for the setex command" do
|
168
|
+
subject.setex('key4', 30, 1).should eq('OK')
|
169
|
+
end
|
170
|
+
|
171
|
+
it 'should convert the key into a string before storing' do
|
172
|
+
subject.set(123, 'foo')
|
173
|
+
subject.keys.should include('123')
|
174
|
+
subject.get('123').should eq('foo')
|
175
|
+
|
176
|
+
subject.setex(456, 30, 'foo')
|
177
|
+
subject.keys.should include('456')
|
178
|
+
subject.get('456').should eq('foo')
|
179
|
+
|
180
|
+
subject.getset(789, 'foo')
|
181
|
+
subject.keys.should include('789')
|
182
|
+
subject.get('789').should eq('foo')
|
183
|
+
end
|
184
|
+
|
185
|
+
it 'should only operate against keys containing string values' do
|
186
|
+
subject.sadd('key1', 'one')
|
187
|
+
|
188
|
+
expect {
|
189
|
+
subject.get('key1')
|
190
|
+
}.to raise_error(Redis::CommandError, 'ERR Operation against a key holding the wrong kind of value')
|
191
|
+
|
192
|
+
expect {
|
193
|
+
subject.getset('key1', 1)
|
194
|
+
}.to raise_error(Redis::CommandError, 'ERR Operation against a key holding the wrong kind of value')
|
195
|
+
|
196
|
+
subject.hset('key2', 'one', 'two')
|
197
|
+
|
198
|
+
expect {
|
199
|
+
subject.get('key2')
|
200
|
+
}.to raise_error(Redis::CommandError, 'ERR Operation against a key holding the wrong kind of value')
|
201
|
+
|
202
|
+
expect {
|
203
|
+
subject.getset('key2', 1)
|
204
|
+
}.to raise_error(Redis::CommandError, 'ERR Operation against a key holding the wrong kind of value')
|
205
|
+
end
|
206
|
+
|
207
|
+
it 'should move a key from one database to another successfully' do
|
208
|
+
subject.select(0)
|
209
|
+
subject.set('key1', '1')
|
210
|
+
|
211
|
+
subject.move('key1', 1).should be_true
|
212
|
+
|
213
|
+
subject.select(0)
|
214
|
+
subject.get('key1').should be_nil
|
215
|
+
|
216
|
+
subject.select(1)
|
217
|
+
subject.get('key1').should eq('1')
|
218
|
+
end
|
219
|
+
|
220
|
+
it 'should fail to move a key that does not exist in the source database' do
|
221
|
+
subject.select(0)
|
222
|
+
subject.get('key1').should be_nil
|
223
|
+
|
224
|
+
subject.move('key1', 1).should be_false
|
225
|
+
|
226
|
+
subject.select(0)
|
227
|
+
subject.get('key1').should be_nil
|
228
|
+
|
229
|
+
subject.select(1)
|
230
|
+
subject.get('key1').should be_nil
|
231
|
+
end
|
232
|
+
|
233
|
+
it 'should fail to move a key that exists in the destination database' do
|
234
|
+
subject.select(0)
|
235
|
+
subject.set('key1', '1')
|
236
|
+
|
237
|
+
subject.select(1)
|
238
|
+
subject.set('key1', '2')
|
239
|
+
|
240
|
+
subject.select(0)
|
241
|
+
subject.move('key1', 1).should be_false
|
242
|
+
|
243
|
+
subject.select(0)
|
244
|
+
subject.get('key1').should eq('1')
|
245
|
+
|
246
|
+
subject.select(1)
|
247
|
+
subject.get('key1').should eq('2')
|
248
|
+
end
|
249
|
+
|
250
|
+
it 'should fail to move a key to the same database' do
|
251
|
+
subject.select(0)
|
252
|
+
subject.set('key1', '1')
|
253
|
+
|
254
|
+
expect {
|
255
|
+
subject.move('key1', 0)
|
256
|
+
}.to raise_error(Redis::CommandError, 'ERR source and destination objects are the same')
|
257
|
+
|
258
|
+
subject.select(0)
|
259
|
+
subject.get('key1').should eq('1')
|
260
|
+
end
|
261
|
+
end
|
@@ -0,0 +1,196 @@
|
|
1
|
+
shared_examples 'lists' do
|
2
|
+
it 'should get an element from a list by its index' do
|
3
|
+
subject.lpush('key1', 'val1')
|
4
|
+
subject.lpush('key1', 'val2')
|
5
|
+
|
6
|
+
subject.lindex('key1', 0).should eq('val2')
|
7
|
+
subject.lindex('key1', -1).should eq('val1')
|
8
|
+
subject.lindex('key1', 3).should be_nil
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'should insert an element before or after another element in a list' do
|
12
|
+
subject.rpush('key1', 'v1')
|
13
|
+
subject.rpush('key1', 'v3')
|
14
|
+
subject.linsert('key1', :before, 'v3', 'v2')
|
15
|
+
|
16
|
+
subject.lrange('key1', 0, -1).should eq(['v1', 'v2', 'v3'])
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'should allow multiple values to be added to a list in a single rpush' do
|
20
|
+
subject.rpush('key1', [1, 2, 3])
|
21
|
+
subject.lrange('key1', 0, -1).should eq(['1', '2', '3'])
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'should allow multiple values to be added to a list in a single lpush' do
|
25
|
+
subject.lpush('key1', [1, 2, 3])
|
26
|
+
subject.lrange('key1', 0, -1).should eq(['3', '2', '1'])
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'should error if an invalid where argument is given' do
|
30
|
+
subject.rpush('key1', 'v1')
|
31
|
+
subject.rpush('key1', 'v3')
|
32
|
+
|
33
|
+
expect {
|
34
|
+
subject.linsert('key1', :invalid, 'v3', 'v2')
|
35
|
+
}.to raise_error(Redis::CommandError)
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'should get the length of a list' do
|
39
|
+
subject.rpush('key1', 'v1')
|
40
|
+
subject.rpush('key1', 'v2')
|
41
|
+
|
42
|
+
subject.llen('key1').should eq(2)
|
43
|
+
subject.llen('key2').should eq(0)
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'should remove and get the first element in a list' do
|
47
|
+
subject.rpush('key1', 'v1')
|
48
|
+
subject.rpush('key1', 'v2')
|
49
|
+
subject.rpush('key1', 'v3')
|
50
|
+
|
51
|
+
subject.lpop('key1').should eq('v1')
|
52
|
+
subject.lrange('key1', 0, -1).should eq(['v2', 'v3'])
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'should prepend a value to a list' do
|
56
|
+
subject.rpush('key1', 'v1')
|
57
|
+
subject.rpush('key1', 'v2')
|
58
|
+
|
59
|
+
subject.lrange('key1', 0, -1).should eq(['v1', 'v2'])
|
60
|
+
end
|
61
|
+
|
62
|
+
it 'should prepend a value to a list, only if the list exists' do
|
63
|
+
subject.lpush('key1', 'v1')
|
64
|
+
|
65
|
+
subject.lpushx('key1', 'v2')
|
66
|
+
subject.lpushx('key2', 'v3')
|
67
|
+
|
68
|
+
subject.lrange('key1', 0, -1).should eq(['v2', 'v1'])
|
69
|
+
subject.llen('key2').should eq(0)
|
70
|
+
end
|
71
|
+
|
72
|
+
it 'should get a range of elements from a list' do
|
73
|
+
subject.rpush('key1', 'v1')
|
74
|
+
subject.rpush('key1', 'v2')
|
75
|
+
subject.rpush('key1', 'v3')
|
76
|
+
|
77
|
+
subject.lrange('key1', 1, -1).should eq(['v2', 'v3'])
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'should remove elements from a list' do
|
81
|
+
subject.rpush('key1', 'v1')
|
82
|
+
subject.rpush('key1', 'v2')
|
83
|
+
subject.rpush('key1', 'v2')
|
84
|
+
subject.rpush('key1', 'v2')
|
85
|
+
subject.rpush('key1', 'v1')
|
86
|
+
|
87
|
+
subject.lrem('key1', 1, 'v1').should eq(1)
|
88
|
+
subject.lrem('key1', -2, 'v2').should eq(2)
|
89
|
+
subject.llen('key1').should eq(2)
|
90
|
+
end
|
91
|
+
|
92
|
+
it "should remove list's key when list is empty" do
|
93
|
+
subject.rpush('key1', 'v1')
|
94
|
+
subject.rpush('key1', 'v2')
|
95
|
+
subject.lrem('key1', 1, 'v1')
|
96
|
+
subject.lrem('key1', 1, 'v2')
|
97
|
+
|
98
|
+
subject.exists('key1').should be_false
|
99
|
+
end
|
100
|
+
|
101
|
+
it 'should set the value of an element in a list by its index' do
|
102
|
+
subject.rpush('key1', 'one')
|
103
|
+
subject.rpush('key1', 'two')
|
104
|
+
subject.rpush('key1', 'three')
|
105
|
+
|
106
|
+
subject.lset('key1', 0, 'four')
|
107
|
+
subject.lset('key1', -2, 'five')
|
108
|
+
subject.lrange('key1', 0, -1).should eq(['four', 'five', 'three'])
|
109
|
+
|
110
|
+
expect {
|
111
|
+
subject.lset('key1', 4, 'six')
|
112
|
+
}.to raise_error(Redis::CommandError)
|
113
|
+
end
|
114
|
+
|
115
|
+
it 'should trim a list to the specified range' do
|
116
|
+
subject.rpush('key1', 'one')
|
117
|
+
subject.rpush('key1', 'two')
|
118
|
+
subject.rpush('key1', 'three')
|
119
|
+
|
120
|
+
subject.ltrim('key1', 1, -1)
|
121
|
+
subject.lrange('key1', 0, -1).should eq(['two', 'three'])
|
122
|
+
end
|
123
|
+
|
124
|
+
context 'when the list is smaller than the requested trim' do
|
125
|
+
before do
|
126
|
+
subject.rpush('listOfOne', 'one')
|
127
|
+
end
|
128
|
+
|
129
|
+
context 'trimming with a negative start (specifying a max)' do
|
130
|
+
before do
|
131
|
+
subject.ltrim('listOfOne', -5, -1)
|
132
|
+
end
|
133
|
+
|
134
|
+
it 'returns the unmodified list' do
|
135
|
+
subject.lrange('listOfOne', 0, -1).should eq(['one'])
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
context 'when the list is larger than the requested trim' do
|
141
|
+
before do
|
142
|
+
subject.rpush('maxTest', 'one')
|
143
|
+
subject.rpush('maxTest', 'two')
|
144
|
+
subject.rpush('maxTest', 'three')
|
145
|
+
subject.rpush('maxTest', 'four')
|
146
|
+
subject.rpush('maxTest', 'five')
|
147
|
+
subject.rpush('maxTest', 'six')
|
148
|
+
end
|
149
|
+
|
150
|
+
context 'trimming with a negative start (specifying a max)' do
|
151
|
+
before do
|
152
|
+
subject.ltrim('maxTest', -5, -1)
|
153
|
+
end
|
154
|
+
|
155
|
+
it 'should trim a list to the specified maximum size' do
|
156
|
+
subject.lrange('maxTest', 0, -1).should eq(['two','three', 'four', 'five', 'six'])
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
it 'should remove and return the last element in a list' do
|
162
|
+
subject.rpush('key1', 'one')
|
163
|
+
subject.rpush('key1', 'two')
|
164
|
+
subject.rpush('key1', 'three')
|
165
|
+
|
166
|
+
subject.rpop('key1').should eq('three')
|
167
|
+
subject.lrange('key1', 0, -1).should eq(['one', 'two'])
|
168
|
+
end
|
169
|
+
|
170
|
+
it 'should remove the last element in a list, append it to another list and return it' do
|
171
|
+
subject.rpush('key1', 'one')
|
172
|
+
subject.rpush('key1', 'two')
|
173
|
+
subject.rpush('key1', 'three')
|
174
|
+
|
175
|
+
subject.rpoplpush('key1', 'key2').should eq('three')
|
176
|
+
|
177
|
+
subject.lrange('key1', 0, -1).should eq(['one', 'two'])
|
178
|
+
subject.lrange('key2', 0, -1).should eq(['three'])
|
179
|
+
end
|
180
|
+
|
181
|
+
it 'should append a value to a list' do
|
182
|
+
subject.rpush('key1', 'one')
|
183
|
+
subject.rpush('key1', 'two')
|
184
|
+
|
185
|
+
subject.lrange('key1', 0, -1).should eq(['one', 'two'])
|
186
|
+
end
|
187
|
+
|
188
|
+
it 'should append a value to a list, only if the list exists' do
|
189
|
+
subject.rpush('key1', 'one')
|
190
|
+
subject.rpushx('key1', 'two')
|
191
|
+
subject.rpushx('key2', 'two')
|
192
|
+
|
193
|
+
subject.lrange('key1', 0, -1).should eq(['one', 'two'])
|
194
|
+
subject.lrange('key2', 0, -1).should be_empty
|
195
|
+
end
|
196
|
+
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
shared_examples 'server' do
|
2
|
+
it 'should return the number of keys in the selected database' do
|
3
|
+
subject.set('key1', '1')
|
4
|
+
subject.set('key2', '2')
|
5
|
+
subject.set('key2', 'two')
|
6
|
+
|
7
|
+
subject.dbsize.should eq(2)
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'should get information and statistics about the server' do
|
11
|
+
subject.info.key?('redis_version').should be_true
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'should handle non-existent methods' do
|
15
|
+
expect {
|
16
|
+
subject.idontexist
|
17
|
+
}.to raise_error(Redis::CommandError)
|
18
|
+
end
|
19
|
+
|
20
|
+
describe 'multiple databases' do
|
21
|
+
it 'should default to database 0' do
|
22
|
+
subject.inspect.should =~ %r#/0>$#
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'should select another database' do
|
26
|
+
subject.select(1)
|
27
|
+
subject.inspect.should =~ %r#/1>$#
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'should store keys separately in each database' do
|
31
|
+
subject.select(0).should eq('OK')
|
32
|
+
subject.set('key1', '1')
|
33
|
+
subject.set('key2', '2')
|
34
|
+
|
35
|
+
subject.select(1)
|
36
|
+
subject.set('key3', '3')
|
37
|
+
subject.set('key4', '4')
|
38
|
+
subject.set('key5', '5')
|
39
|
+
|
40
|
+
subject.select(0)
|
41
|
+
subject.dbsize.should eq(2)
|
42
|
+
subject.exists('key1').should be_true
|
43
|
+
subject.exists('key3').should be_false
|
44
|
+
|
45
|
+
subject.select(1)
|
46
|
+
subject.dbsize.should eq(3)
|
47
|
+
subject.exists('key4').should be_true
|
48
|
+
subject.exists('key2').should be_false
|
49
|
+
|
50
|
+
subject.flushall
|
51
|
+
subject.dbsize.should eq(0)
|
52
|
+
|
53
|
+
subject.select(0)
|
54
|
+
subject.dbsize.should eq(0)
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'should flush a database' do
|
58
|
+
subject.select(0)
|
59
|
+
subject.set('key1', '1')
|
60
|
+
subject.set('key2', '2')
|
61
|
+
subject.dbsize.should eq(2)
|
62
|
+
|
63
|
+
subject.select(1)
|
64
|
+
subject.set('key3', '3')
|
65
|
+
subject.set('key4', '4')
|
66
|
+
subject.dbsize.should eq(2)
|
67
|
+
|
68
|
+
subject.flushdb.should eq('OK')
|
69
|
+
|
70
|
+
subject.dbsize.should eq(0)
|
71
|
+
subject.select(0)
|
72
|
+
subject.dbsize.should eq(2)
|
73
|
+
end
|
74
|
+
|
75
|
+
it 'should flush all databases' do
|
76
|
+
subject.select(0)
|
77
|
+
subject.set('key3', '3')
|
78
|
+
subject.set('key4', '4')
|
79
|
+
subject.dbsize.should eq(2)
|
80
|
+
|
81
|
+
subject.select(1)
|
82
|
+
subject.set('key3', '3')
|
83
|
+
subject.set('key4', '4')
|
84
|
+
subject.dbsize.should eq(2)
|
85
|
+
|
86
|
+
subject.flushall.should eq('OK')
|
87
|
+
|
88
|
+
subject.dbsize.should eq(0)
|
89
|
+
subject.select(0)
|
90
|
+
subject.dbsize.should eq(0)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|