me-redis 0.1.3 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
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: []