red_blocks 0.1.5 → 0.1.7
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.
- checksums.yaml +5 -5
- data/CHANGELOG.md +6 -0
- data/README.md +1 -5
- data/lib/red_blocks/composed_set.rb +7 -5
- data/lib/red_blocks/intersection_set.rb +4 -6
- data/lib/red_blocks/operations.rb +2 -2
- data/lib/red_blocks/set.rb +4 -4
- data/lib/red_blocks/subtraction_set.rb +2 -2
- data/lib/red_blocks/union_set.rb +4 -6
- data/lib/red_blocks/version.rb +1 -1
- data/red_blocks.gemspec +1 -1
- metadata +8 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 55b03475a362f7e4f4de3da9a17d8ce3f8ba45a65018abb7b5400a256d951732
|
4
|
+
data.tar.gz: 1be31a031e4a2c999e64b5fd6d2395cf0b7b0b54d6e6b21026fb25dd11e68654
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3b0a7f6a2cc0a1329f6d424e4a32118e4650c511b27fbb6fcad147de6d5d2582a2d1405376fdeaa123af5ddf87b3955fd7e43bba8d3fba552f05916670c4bc13
|
7
|
+
data.tar.gz: e38ad3d62403cca86668277a04a3bdbab95c2059a14e6920136d80098e58b673d6902adea81e03625af92f7d5970afe99c3b990c16ab321bbd3a4eb6041f680e
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
## CHANGELOG
|
2
2
|
|
3
|
+
### v0.1.7 / 2023-06-21
|
4
|
+
- Make compatible to redis gem 5 series @KeiSakam https://github.com/Altech/red_blocks/pull/13
|
5
|
+
|
6
|
+
### v0.1.6 / 2022-09-02
|
7
|
+
- Make ComposedSet#update! safe to Redis connection lost by @stomk https://github.com/Altech/red_blocks/pull/12
|
8
|
+
|
3
9
|
### v0.1.0 / 2017-12-05
|
4
10
|
|
5
11
|
First release.
|
data/README.md
CHANGED
@@ -50,8 +50,4 @@ In general, there are some advantages by using RedBlocks.
|
|
50
50
|
gem 'red_blocks'
|
51
51
|
```
|
52
52
|
|
53
|
-
|
54
|
-
|
55
|
-
TODO: document
|
56
|
-
|
57
|
-
[This entry](http://takenos.link/post/173086712782/redis-sorted-set-in-oop) describes the usage of RedBlocks (in japanese).
|
53
|
+
[This entry](https://qiita.com/Altech/items/db48e7906c90d542c732) and [this slide](http://speakerdeck.com/altech/object-oriented-abstraction-of-redis-sorted-set) describe the usage of RedBlocks (in japanese).
|
@@ -27,8 +27,10 @@ module RedBlocks
|
|
27
27
|
|
28
28
|
def update!
|
29
29
|
disabled_sets.each(&:update!)
|
30
|
-
|
31
|
-
|
30
|
+
RedBlocks.client.pipelined do |pipeline|
|
31
|
+
compose_sets!(pipeline)
|
32
|
+
pipeline.expire(key, expiration_time)
|
33
|
+
end
|
32
34
|
end
|
33
35
|
|
34
36
|
def cache_time
|
@@ -41,13 +43,13 @@ module RedBlocks
|
|
41
43
|
|
42
44
|
private
|
43
45
|
|
44
|
-
def compose_sets!
|
46
|
+
def compose_sets!(pipeline)
|
45
47
|
raise NotImplementedError
|
46
48
|
end
|
47
49
|
|
48
50
|
def disabled_sets
|
49
|
-
ttls = RedBlocks.client.pipelined do
|
50
|
-
@sets.each { |set|
|
51
|
+
ttls = RedBlocks.client.pipelined do |pipeline|
|
52
|
+
@sets.each { |set| pipeline.ttl(set.key) }
|
51
53
|
end
|
52
54
|
@sets.zip(ttls).select do |set, ttl|
|
53
55
|
set.disabled?(ttl)
|
@@ -2,15 +2,13 @@ module RedBlocks
|
|
2
2
|
class IntersectionSet < ComposedSet
|
3
3
|
private
|
4
4
|
|
5
|
-
def compose_sets!
|
5
|
+
def compose_sets!(pipeline)
|
6
6
|
sets = @sets.to_a
|
7
7
|
if sets.size > 0
|
8
|
-
|
8
|
+
pipeline.zinterstore(key, sets.map(&:key), weights: sets.map(&:weight), aggregate: score_func)
|
9
9
|
else
|
10
|
-
|
11
|
-
|
12
|
-
RedBlocks.client.zadd(key, normalize_entries([]))
|
13
|
-
end
|
10
|
+
pipeline.del(key)
|
11
|
+
pipeline.zadd(key, normalize_entries([]))
|
14
12
|
end
|
15
13
|
end
|
16
14
|
end
|
@@ -3,9 +3,9 @@
|
|
3
3
|
module RedBlocks::Operations
|
4
4
|
def self.delete(set_or_pattern)
|
5
5
|
keys = self.keys(set_or_pattern)
|
6
|
-
RedBlocks.client.pipelined do
|
6
|
+
RedBlocks.client.pipelined do |pipeline|
|
7
7
|
keys.each do |key|
|
8
|
-
|
8
|
+
pipeline.del(key)
|
9
9
|
end
|
10
10
|
end
|
11
11
|
end
|
data/lib/red_blocks/set.rb
CHANGED
@@ -6,10 +6,10 @@ module RedBlocks
|
|
6
6
|
def update!(get_result = self.get)
|
7
7
|
entries = normalize_entries(validate_entries!(get_result))
|
8
8
|
removed_ids = self.ids(paginator: Paginator.all, update_if_disabled: false) - entries.map(&:last)
|
9
|
-
RedBlocks.client.pipelined do
|
10
|
-
|
11
|
-
|
12
|
-
|
9
|
+
RedBlocks.client.pipelined do |pipeline|
|
10
|
+
pipeline.zrem(key, removed_ids) if removed_ids.size > 0
|
11
|
+
pipeline.zadd(key, entries)
|
12
|
+
pipeline.expire(key, expiration_time)
|
13
13
|
end
|
14
14
|
nil
|
15
15
|
end
|
@@ -40,8 +40,8 @@ module RedBlocks
|
|
40
40
|
private
|
41
41
|
|
42
42
|
def disabled_sets
|
43
|
-
ttls = RedBlocks.client.pipelined do
|
44
|
-
sets.each { |set|
|
43
|
+
ttls = RedBlocks.client.pipelined do |pipeline|
|
44
|
+
sets.each { |set| pipeline.ttl(set.key) }
|
45
45
|
end
|
46
46
|
sets.zip(ttls).select do |set, ttl|
|
47
47
|
set.disabled?(ttl)
|
data/lib/red_blocks/union_set.rb
CHANGED
@@ -2,15 +2,13 @@ module RedBlocks
|
|
2
2
|
class UnionSet < ComposedSet
|
3
3
|
private
|
4
4
|
|
5
|
-
def compose_sets!
|
5
|
+
def compose_sets!(pipeline)
|
6
6
|
sets = @sets.to_a
|
7
7
|
if sets.size > 0
|
8
|
-
|
8
|
+
pipeline.zunionstore(key, sets.map(&:key), weights: sets.map(&:weight), aggregate: score_func)
|
9
9
|
else
|
10
|
-
|
11
|
-
|
12
|
-
RedBlocks.client.zadd(key, normalize_entries([]))
|
13
|
-
end
|
10
|
+
pipeline.del(key)
|
11
|
+
pipeline.zadd(key, normalize_entries([]))
|
14
12
|
end
|
15
13
|
end
|
16
14
|
end
|
data/lib/red_blocks/version.rb
CHANGED
data/red_blocks.gemspec
CHANGED
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
|
|
23
23
|
|
24
24
|
spec.required_ruby_version = '>= 2.4.0'
|
25
25
|
|
26
|
-
spec.add_dependency "redis", ">= 3.3", "<
|
26
|
+
spec.add_dependency "redis", ">= 3.3", "< 6.0"
|
27
27
|
spec.add_development_dependency "bundler"
|
28
28
|
spec.add_development_dependency "rake", "~> 13.0"
|
29
29
|
spec.add_development_dependency "rspec", "~> 3.0"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: red_blocks
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Altech
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-06-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: redis
|
@@ -19,7 +19,7 @@ dependencies:
|
|
19
19
|
version: '3.3'
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: '
|
22
|
+
version: '6.0'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -29,7 +29,7 @@ dependencies:
|
|
29
29
|
version: '3.3'
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: '
|
32
|
+
version: '6.0'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: bundler
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -184,7 +184,7 @@ homepage: https://github.com/Altech/red_blocks
|
|
184
184
|
licenses:
|
185
185
|
- MIT
|
186
186
|
metadata: {}
|
187
|
-
post_install_message:
|
187
|
+
post_install_message:
|
188
188
|
rdoc_options: []
|
189
189
|
require_paths:
|
190
190
|
- lib
|
@@ -199,9 +199,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
199
199
|
- !ruby/object:Gem::Version
|
200
200
|
version: '0'
|
201
201
|
requirements: []
|
202
|
-
|
203
|
-
|
204
|
-
signing_key:
|
202
|
+
rubygems_version: 3.2.3
|
203
|
+
signing_key:
|
205
204
|
specification_version: 4
|
206
205
|
summary: Object-oriented abstraction of Redis sorted set.
|
207
206
|
test_files: []
|