fino-redis 1.3.1 → 1.4.0
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 +4 -4
- data/lib/fino/redis/adapter.rb +29 -7
- data/lib/fino/redis/custom_redis_scripts.rb +15 -3
- data/lib/fino/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: bf8532d7c9300576fc53693bc44a1ae65cecc2177c7cffe1ced5e233c915272a
|
|
4
|
+
data.tar.gz: 0a8d663f550775de858394e53c6ee522e07d0a90fe257fd1c6d5a16773a743cc
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c7257b235d5755fb4474fb5e3a478b8e97b0a80a78b54b11967faf871bf70f3e34e3f7a4f49da1cf24729df12052617c6ec1b9fd1ebff255f5cccd40daf8937c
|
|
7
|
+
data.tar.gz: 5c44aa7255f8e5bb2ea16a8167acd64385e031a22635ebd583ebeac17aead3dd5c8acf504bd2134c4f550c5f3dc329d88b3593df9bf4e2676ed94037cffbb073
|
data/lib/fino/redis/adapter.rb
CHANGED
|
@@ -6,6 +6,8 @@ class Fino::Redis::Adapter
|
|
|
6
6
|
using Fino::CustomRedisScripts
|
|
7
7
|
|
|
8
8
|
DEFAULT_REDIS_NAMESPACE = "fino"
|
|
9
|
+
SETTINGS_NAMESPACE = "s"
|
|
10
|
+
PERSISTED_SETTINGS_KEYS_REDIS_KEY = "psl"
|
|
9
11
|
SCOPE_PREFIX = "s"
|
|
10
12
|
VARIANT_PREFIX = "v"
|
|
11
13
|
VALUE_KEY = "v"
|
|
@@ -15,12 +17,12 @@ class Fino::Redis::Adapter
|
|
|
15
17
|
@redis_namespace = namespace
|
|
16
18
|
end
|
|
17
19
|
|
|
18
|
-
def read(
|
|
19
|
-
redis.hgetall(redis_key_for(
|
|
20
|
+
def read(setting_key)
|
|
21
|
+
redis.hgetall(redis_key_for(setting_key))
|
|
20
22
|
end
|
|
21
23
|
|
|
22
|
-
def read_multi(
|
|
23
|
-
keys =
|
|
24
|
+
def read_multi(setting_keys)
|
|
25
|
+
keys = setting_keys.map { |setting_key| redis_key_for(setting_key) }
|
|
24
26
|
|
|
25
27
|
redis.pipelined do |pipeline|
|
|
26
28
|
keys.each { |key| pipeline.hgetall(key) }
|
|
@@ -42,7 +44,23 @@ class Fino::Redis::Adapter
|
|
|
42
44
|
hash["#{VARIANT_PREFIX}/#{variant.percentage}/#{VALUE_KEY}"] = serialize_value.call(variant.value)
|
|
43
45
|
end
|
|
44
46
|
|
|
45
|
-
redis.
|
|
47
|
+
redis.multi do |r|
|
|
48
|
+
r.mapped_hreplace(redis_key_for(setting_definition.key), hash)
|
|
49
|
+
r.sadd(build_redis_key(PERSISTED_SETTINGS_KEYS_REDIS_KEY), setting_definition.key)
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def read_persisted_setting_keys
|
|
54
|
+
redis.smembers(build_redis_key(PERSISTED_SETTINGS_KEYS_REDIS_KEY))
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def clear(setting_key)
|
|
58
|
+
_, cleared = redis.multi do |r|
|
|
59
|
+
r.del(redis_key_for(setting_key))
|
|
60
|
+
r.srem(build_redis_key(PERSISTED_SETTINGS_KEYS_REDIS_KEY), setting_key)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
cleared == 1
|
|
46
64
|
end
|
|
47
65
|
|
|
48
66
|
def fetch_value_from(raw_adapter_data)
|
|
@@ -72,7 +90,11 @@ class Fino::Redis::Adapter
|
|
|
72
90
|
|
|
73
91
|
attr_reader :redis, :redis_namespace
|
|
74
92
|
|
|
75
|
-
def redis_key_for(
|
|
76
|
-
|
|
93
|
+
def redis_key_for(setting_key)
|
|
94
|
+
build_redis_key(SETTINGS_NAMESPACE, setting_key)
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def build_redis_key(*parts)
|
|
98
|
+
[redis_namespace, *parts].join(":")
|
|
77
99
|
end
|
|
78
100
|
end
|
|
@@ -1,12 +1,24 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module Fino::CustomRedisScripts
|
|
4
|
+
module_function
|
|
5
|
+
|
|
6
|
+
def mapped_hreplace(connection, key, values_mapping)
|
|
7
|
+
connection.del(key)
|
|
8
|
+
connection.mapped_hmset(key, values_mapping)
|
|
9
|
+
end
|
|
10
|
+
|
|
4
11
|
refine Redis do
|
|
5
12
|
def mapped_hreplace(key, values_mapping)
|
|
6
|
-
multi do |
|
|
7
|
-
|
|
8
|
-
r.mapped_hmset(key, values_mapping)
|
|
13
|
+
multi do |multi|
|
|
14
|
+
Fino::CustomRedisScripts.mapped_hreplace(multi, key, values_mapping)
|
|
9
15
|
end
|
|
10
16
|
end
|
|
11
17
|
end
|
|
18
|
+
|
|
19
|
+
refine Redis::MultiConnection do
|
|
20
|
+
def mapped_hreplace(key, values_mapping)
|
|
21
|
+
Fino::CustomRedisScripts.mapped_hreplace(self, key, values_mapping)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
12
24
|
end
|
data/lib/fino/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: fino-redis
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.4.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Egor Iskrenkov
|
|
@@ -15,14 +15,14 @@ dependencies:
|
|
|
15
15
|
requirements:
|
|
16
16
|
- - "~>"
|
|
17
17
|
- !ruby/object:Gem::Version
|
|
18
|
-
version: 1.
|
|
18
|
+
version: 1.4.0
|
|
19
19
|
type: :runtime
|
|
20
20
|
prerelease: false
|
|
21
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
22
22
|
requirements:
|
|
23
23
|
- - "~>"
|
|
24
24
|
- !ruby/object:Gem::Version
|
|
25
|
-
version: 1.
|
|
25
|
+
version: 1.4.0
|
|
26
26
|
- !ruby/object:Gem::Dependency
|
|
27
27
|
name: redis
|
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|