me-redis 0.1.3 → 0.1.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3a65c3be77f851506ff1fe5e6710e3527bf3c54ecfed4779c46c07807db51467
4
- data.tar.gz: 6d5c7c61bb15c9aa82beb4b82850ba17ba8dfc6c8b326d10a66e2f5d99522432
3
+ metadata.gz: fcb807ddbff3ae63c2c4ae0a1bdd2bee8e37202ca0477fc3c86d6b7c58feaa3d
4
+ data.tar.gz: 9d60ce417f2b0dfbf5e7fdf56ab6057e1a4f3bdb2ecc6793f8a952dc6fa9ed82
5
5
  SHA512:
6
- metadata.gz: b60ea826f7877551700abdb66971bb284ec7a77a000e60424726a23b75e8d43042f7c3165684a937a5cc09a4614f067bc15b0bd32c3f564dd9f41f59f8d7c342
7
- data.tar.gz: 58df460a2267047e2f264f5bb58e28e70b4b27e840ac404f2c88dacefa155ac88258ed7af3ad6091290bfaaa1d88a79a3f13ac8c3b1e69c6eb5717ba4196bfe8
6
+ metadata.gz: 644bb9d176681ad580f7d268e6a3d51e4c06632d2269d00521a318544ed34a5fa50e9cc9035d94a6d823c3bd1e7b1d481406c4d3c82681343cfbb64c464e77b0
7
+ data.tar.gz: 4440092927b370e803e9d52eeb67477e9304734b178f4d013b4dec13af4d7ff44d9870190316e89f1fd515130cf0b838ab5401534ef089981cf16f6b2f31c41d
data/CHANGELOG.md CHANGED
@@ -1,8 +1,25 @@
1
+ # 0.1.6
2
+ * adapted for ruby 3.1
3
+
4
+ # 0.1.5
5
+ * keys will return keys after applying me_key transformation to a given pattern
6
+ * config now is an OpenStruct, not a Struct
7
+
8
+ # 0.1.4
9
+ * set method signature fix
10
+ * ttl will respect key zipping
11
+
12
+ # 0.1.3
13
+ * minor messaging changes for AWS config, warning popups not on config calls
14
+ but on prepend. Config calls just displays resulting config now
15
+
1
16
  # 0.1.2
2
17
  * add AwsConfigBlocker extension. Prepending MeRedis successor with this module
3
18
  prevents error while using the MeRedis with AWS ElasticCache (AWS blocks all config calls).
4
19
 
5
20
  * added docker-compose for local testing comfort
6
21
 
22
+ * awesome_print prod dependency
23
+
7
24
  # 0.1.1
8
25
  * add MockRedis extension
data/Dockerfile CHANGED
@@ -1,6 +1,7 @@
1
- FROM ruby:2.5
1
+ FROM ruby:2.7
2
2
 
3
3
  WORKDIR me-redis
4
4
 
5
5
  ADD . /me-redis/
6
+ RUN gem install bundler
6
7
  RUN bundle install
data/docker-compose.yml CHANGED
@@ -9,6 +9,19 @@ services:
9
9
  build: .
10
10
  image: me-redis-test
11
11
  command: bundle exec rake test
12
+ volumes:
13
+ - '.:/me-redis'
14
+ depends_on:
15
+ - redis
16
+ environment:
17
+ REDIS_URL: redis://redis:6379
18
+
19
+ test3:
20
+ build:
21
+ context: .
22
+ dockerfile: ruby3.Dockerfile
23
+ image: me-redis-test-3
24
+ command: bundle exec rake test
12
25
  volumes:
13
26
  - '.:/me-redis'
14
27
  depends_on:
@@ -9,17 +9,17 @@ module MeRedisHotMigrator
9
9
 
10
10
  base.class_eval do
11
11
  ZK_FALLBACK_METHODS.each do |method|
12
- alias_method "_#{method}", method
12
+ alias_method "___#{method}", method
13
13
  end
14
14
 
15
15
  include(MeRedis)
16
16
 
17
17
  def me_get( key )
18
- prev_future = _get( key ) unless @client.is_a?(self.class::Client)
18
+ prev_future = ___get( key ) unless @client.is_a?(self.class::Client)
19
19
  newvl = super(key)
20
20
 
21
21
  newvl.prev_future = prev_future if newvl.is_a?(self.class::Future)
22
- newvl || _get( key )
22
+ newvl || ___get( key )
23
23
  end
24
24
 
25
25
  def me_mget(*keys)
@@ -36,15 +36,15 @@ module MeRedisHotMigrator
36
36
  module PrependMethods
37
37
  ZK_FALLBACK_METHODS.each do |method|
38
38
  define_method(method) do |*args|
39
- prev_future = send("_#{method}", *args) unless @client.is_a?(self.class::Client)
39
+ prev_future = send("___#{method}", *args) unless @client.is_a?(self.class::Client)
40
40
  newvl = super(*args)
41
41
 
42
42
  newvl.prev_future = prev_future if newvl.is_a?(self.class::Future)
43
43
 
44
44
  if method != :mget
45
- newvl || send("_#{method}", *args)
45
+ newvl || send("___#{method}", *args)
46
46
  else
47
- newvl.is_a?(Array) ? newvl.zip( send("_#{method}", *args) ).map!{|nvl, oldv| nvl || oldv } : newvl
47
+ newvl.is_a?(Array) ? newvl.zip( send("___#{method}", *args) ).map!{|nvl, oldv| nvl || oldv } : newvl
48
48
  end
49
49
 
50
50
  end
@@ -1,3 +1,3 @@
1
1
  module MeRedis
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.6"
3
3
  end
@@ -16,6 +16,11 @@ module MeRedis
16
16
  end
17
17
  end.join
18
18
  end
19
+ alias me_key zip_key
20
+
21
+ def keys( pattern )
22
+ super( me_key(pattern) )
23
+ end
19
24
 
20
25
  #---- h_methods ---------------------------
21
26
  def hdel( key, hkey ); super( zip_key(key), hkey ) end
@@ -37,7 +42,8 @@ module MeRedis
37
42
  def persist(key); super(zip_key(key)) end
38
43
 
39
44
  def decrby( key, decrement ); super(zip_key(key), decrement) end
40
- def set( key, value ); super( zip_key(key), value ) end
45
+ def set( key, value, **options ); super( zip_key(key), value, **options ) end
46
+ def ttl(key); super( zip_key(key) ) end
41
47
  def mset( *key_values ); super( *key_values.each_slice(2).map{ |k,v| [zip_key(k),v] }.flatten ) end
42
48
  def mget( *keys ); super( *keys.map!{ |k| zip_key(k) } ) end
43
49
 
@@ -3,8 +3,8 @@ module MeRedis
3
3
  module ZipToHash
4
4
 
5
5
  module PrependMethods
6
- def initialize(*args, &block)
7
- super(*args, &block)
6
+ def initialize(*args, **kwargs, &block)
7
+ super(*args,**kwargs, &block)
8
8
 
9
9
  # hash-max-ziplist-entries must be cashed, we can't ask Redis every time we need to zip keys,
10
10
  # cause it's less performant and impossible during pipelining.
@@ -98,7 +98,7 @@ module MeRedis
98
98
 
99
99
  # Redis prepended methods
100
100
  def get( key ); unzip_value( super( key ), key) end
101
- def set( key, value ); super( key, zip_value(value, key) ) end
101
+ def set( key, value, **options); super( key, zip_value(value, key), **options ) end
102
102
 
103
103
  def mget(*args); unzip_arr_or_future(super(*args), args ) end
104
104
  def mset(*args); super( *map_msets_arr(args) ) end
data/lib/me_redis.rb CHANGED
@@ -17,17 +17,16 @@ require 'zlib'
17
17
  module MeRedis
18
18
  module ClassMethods
19
19
 
20
- def configure( config = nil )
20
+ def configure( **config )
21
21
  # at start they are nils, but at subsequent calls they may not be nils
22
22
  me_config.key_zip_regxp = nil
23
23
  me_config.compress_ns_regexp = nil
24
24
  @zip_ns_finder = nil
25
25
 
26
- config.each{ |key,value| me_config.send( "#{key}=", value ) } if config
26
+ config.each { |key,value| me_config.send( "#{key}=", value ) } if config
27
27
 
28
28
  yield( me_config ) if block_given?
29
29
 
30
-
31
30
  prepare_zip_crumbs
32
31
  prepare_compressors
33
32
 
@@ -36,31 +35,37 @@ module MeRedis
36
35
  end
37
36
 
38
37
  def me_config
39
- @me_config ||= Struct.new(
38
+ @me_config ||= OpenStruct.new(
40
39
  # if set - configures Redis hash_max_ziplist_entries value,
41
40
  # otherwise it will be filled from Redis hash-max-ziplist-value
42
- :hash_max_ziplist_entries,
41
+ hash_max_ziplist_entries: 512,
42
+
43
43
  # same as above only for value, only resets it globally if present
44
- :hash_max_ziplist_value,
44
+ # :hash_max_ziplist_value,
45
+
45
46
  # array or hash or string/sym of key crumbs to zip, if a hash given it used as is,
46
47
  # otherwise meredis tries to construct hash by using first char from each key + integer in base62 form for
47
48
  # subsequent appearence of a crumb starting with same char
48
- :zip_crumbs,
49
+ # :zip_crumbs,
50
+
49
51
  # zip integers in keys to base62 form
50
- :integers_to_base62,
52
+ # :integers_to_base62,
53
+
51
54
  # regex composed from zip_crumbs keys and integer regexp if integers_to_base62 is set
52
- :key_zip_regxp,
55
+ # :key_zip_regxp,
56
+
53
57
  # prefixes/namespaces for keys need zipping,
54
58
  # acceptable formats:
55
59
  # 1. single string/sym will map it to defauilt compressor
56
60
  # 2. array of string/syms will map it to defauilt compressor
57
61
  # 3. hash maps different kinds of 1 and 2 to custom compressors
58
- :compress_namespaces,
62
+ # :compress_namespaces,
63
+
59
64
  # if configured than default_compressor used for compression of all keys matched and compress_namespaces is ignored
60
- :compress_ns_regexp,
65
+ # :compress_ns_regexp,
61
66
 
62
- :default_compressor
63
- ).new(512)
67
+ # :default_compressor
68
+ )
64
69
  end
65
70
 
66
71
  def zip_crumbs; me_config.zip_crumbs end
@@ -93,6 +98,7 @@ module MeRedis
93
98
 
94
99
  def zip_ns_finder
95
100
  return @zip_ns_finder if @zip_ns_finder
101
+
96
102
  regexps_compress_ns = me_config.compress_namespaces.keys.select{|key| key.is_a?(Regexp) }
97
103
  strs_compress_ns = me_config.compress_namespaces.keys.select{|key| !key.is_a?(Regexp) }
98
104
 
data/me-redis.gemspec CHANGED
@@ -27,13 +27,13 @@ Gem::Specification.new do |spec|
27
27
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
28
  spec.require_paths = ["lib"]
29
29
 
30
- spec.add_dependency 'redis', '>= 3.0'
30
+ spec.add_dependency 'redis', '>= 3.0', '<= 4.5.1'
31
31
  spec.add_dependency 'base62-rb'
32
32
  spec.add_dependency "awesome_print"
33
33
 
34
- spec.add_development_dependency "bundler", "~> 1.16"
34
+ spec.add_development_dependency "bundler", "~> 2.0"
35
35
  spec.add_development_dependency "rake", "~> 10.0"
36
36
  spec.add_development_dependency "minitest"
37
- spec.add_development_dependency "pry-byebug"
37
+ spec.add_development_dependency "byebug", "~> 11.0.1"
38
38
 
39
39
  end
data/ruby3.Dockerfile ADDED
@@ -0,0 +1,7 @@
1
+ FROM ruby:3-bullseye
2
+
3
+ WORKDIR me-redis
4
+
5
+ ADD . /me-redis/
6
+ RUN gem install bundler
7
+ RUN bundle install
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: me-redis
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - alekseyl
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-06-30 00:00:00.000000000 Z
11
+ date: 2022-07-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: redis
@@ -17,6 +17,9 @@ dependencies:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '3.0'
20
+ - - "<="
21
+ - !ruby/object:Gem::Version
22
+ version: 4.5.1
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -24,6 +27,9 @@ dependencies:
24
27
  - - ">="
25
28
  - !ruby/object:Gem::Version
26
29
  version: '3.0'
30
+ - - "<="
31
+ - !ruby/object:Gem::Version
32
+ version: 4.5.1
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: base62-rb
29
35
  requirement: !ruby/object:Gem::Requirement
@@ -58,14 +64,14 @@ dependencies:
58
64
  requirements:
59
65
  - - "~>"
60
66
  - !ruby/object:Gem::Version
61
- version: '1.16'
67
+ version: '2.0'
62
68
  type: :development
63
69
  prerelease: false
64
70
  version_requirements: !ruby/object:Gem::Requirement
65
71
  requirements:
66
72
  - - "~>"
67
73
  - !ruby/object:Gem::Version
68
- version: '1.16'
74
+ version: '2.0'
69
75
  - !ruby/object:Gem::Dependency
70
76
  name: rake
71
77
  requirement: !ruby/object:Gem::Requirement
@@ -95,19 +101,19 @@ dependencies:
95
101
  - !ruby/object:Gem::Version
96
102
  version: '0'
97
103
  - !ruby/object:Gem::Dependency
98
- name: pry-byebug
104
+ name: byebug
99
105
  requirement: !ruby/object:Gem::Requirement
100
106
  requirements:
101
- - - ">="
107
+ - - "~>"
102
108
  - !ruby/object:Gem::Version
103
- version: '0'
109
+ version: 11.0.1
104
110
  type: :development
105
111
  prerelease: false
106
112
  version_requirements: !ruby/object:Gem::Requirement
107
113
  requirements:
108
- - - ">="
114
+ - - "~>"
109
115
  - !ruby/object:Gem::Version
110
- version: '0'
116
+ version: 11.0.1
111
117
  description: Enable to zip keys, zip values and replace simple storage key/value pairs
112
118
  with hash storing
113
119
  email:
@@ -137,12 +143,13 @@ files:
137
143
  - lib/me_redis/zip_to_hash.rb
138
144
  - lib/me_redis/zip_values.rb
139
145
  - me-redis.gemspec
146
+ - ruby3.Dockerfile
140
147
  homepage: https://github.com/alekseyl/me-redis
141
148
  licenses:
142
149
  - MIT
143
150
  metadata:
144
151
  allowed_push_host: https://rubygems.org
145
- post_install_message:
152
+ post_install_message:
146
153
  rdoc_options: []
147
154
  require_paths:
148
155
  - lib
@@ -157,9 +164,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
157
164
  - !ruby/object:Gem::Version
158
165
  version: '0'
159
166
  requirements: []
160
- rubyforge_project:
161
- rubygems_version: 2.7.6
162
- signing_key:
167
+ rubygems_version: 3.2.15
168
+ signing_key:
163
169
  specification_version: 4
164
170
  summary: Memory efficient redis extention
165
171
  test_files: []