dalli 2.7.2 → 3.2.4

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.
Files changed (60) hide show
  1. checksums.yaml +5 -5
  2. data/{History.md → CHANGELOG.md} +231 -0
  3. data/Gemfile +14 -5
  4. data/LICENSE +1 -1
  5. data/README.md +33 -201
  6. data/lib/dalli/cas/client.rb +2 -57
  7. data/lib/dalli/client.rb +259 -254
  8. data/lib/dalli/compressor.rb +13 -2
  9. data/lib/dalli/key_manager.rb +121 -0
  10. data/lib/dalli/options.rb +7 -7
  11. data/lib/dalli/pid_cache.rb +40 -0
  12. data/lib/dalli/pipelined_getter.rb +177 -0
  13. data/lib/dalli/protocol/base.rb +239 -0
  14. data/lib/dalli/protocol/binary/request_formatter.rb +117 -0
  15. data/lib/dalli/protocol/binary/response_header.rb +36 -0
  16. data/lib/dalli/protocol/binary/response_processor.rb +239 -0
  17. data/lib/dalli/protocol/binary/sasl_authentication.rb +60 -0
  18. data/lib/dalli/protocol/binary.rb +173 -0
  19. data/lib/dalli/protocol/connection_manager.rb +254 -0
  20. data/lib/dalli/protocol/meta/key_regularizer.rb +31 -0
  21. data/lib/dalli/protocol/meta/request_formatter.rb +121 -0
  22. data/lib/dalli/protocol/meta/response_processor.rb +211 -0
  23. data/lib/dalli/protocol/meta.rb +178 -0
  24. data/lib/dalli/protocol/response_buffer.rb +54 -0
  25. data/lib/dalli/protocol/server_config_parser.rb +86 -0
  26. data/lib/dalli/protocol/ttl_sanitizer.rb +45 -0
  27. data/lib/dalli/protocol/value_compressor.rb +85 -0
  28. data/lib/dalli/protocol/value_marshaller.rb +59 -0
  29. data/lib/dalli/protocol/value_serializer.rb +91 -0
  30. data/lib/dalli/protocol.rb +8 -0
  31. data/lib/dalli/ring.rb +97 -86
  32. data/lib/dalli/server.rb +4 -694
  33. data/lib/dalli/servers_arg_normalizer.rb +54 -0
  34. data/lib/dalli/socket.rb +122 -80
  35. data/lib/dalli/version.rb +5 -1
  36. data/lib/dalli.rb +45 -14
  37. data/lib/rack/session/dalli.rb +162 -42
  38. metadata +40 -96
  39. data/Performance.md +0 -42
  40. data/Rakefile +0 -42
  41. data/dalli.gemspec +0 -29
  42. data/lib/action_dispatch/middleware/session/dalli_store.rb +0 -81
  43. data/lib/active_support/cache/dalli_store.rb +0 -363
  44. data/lib/dalli/railtie.rb +0 -7
  45. data/test/benchmark_test.rb +0 -242
  46. data/test/helper.rb +0 -55
  47. data/test/memcached_mock.rb +0 -121
  48. data/test/sasldb +0 -1
  49. data/test/test_active_support.rb +0 -439
  50. data/test/test_cas_client.rb +0 -107
  51. data/test/test_compressor.rb +0 -53
  52. data/test/test_dalli.rb +0 -625
  53. data/test/test_encoding.rb +0 -32
  54. data/test/test_failover.rb +0 -128
  55. data/test/test_network.rb +0 -54
  56. data/test/test_rack_session.rb +0 -341
  57. data/test/test_ring.rb +0 -85
  58. data/test/test_sasl.rb +0 -110
  59. data/test/test_serializer.rb +0 -30
  60. data/test/test_server.rb +0 -80
metadata CHANGED
@@ -1,138 +1,82 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dalli
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.7.2
4
+ version: 3.2.4
5
5
  platform: ruby
6
6
  authors:
7
+ - Peter M. Goldstein
7
8
  - Mike Perham
8
- autorequire:
9
+ autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2014-05-17 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: minitest
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: 4.2.0
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: 4.2.0
27
- - !ruby/object:Gem::Dependency
28
- name: mocha
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: rails
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '4'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '4'
12
+ date: 2023-02-17 00:00:00.000000000 Z
13
+ dependencies: []
55
14
  description: High performance memcached client for Ruby
56
- email: mperham@gmail.com
15
+ email:
16
+ - peter.m.goldstein@gmail.com
17
+ - mperham@gmail.com
57
18
  executables: []
58
19
  extensions: []
59
20
  extra_rdoc_files: []
60
21
  files:
22
+ - CHANGELOG.md
61
23
  - Gemfile
62
- - History.md
63
24
  - LICENSE
64
- - Performance.md
65
25
  - README.md
66
- - Rakefile
67
- - dalli.gemspec
68
- - lib/action_dispatch/middleware/session/dalli_store.rb
69
- - lib/active_support/cache/dalli_store.rb
70
26
  - lib/dalli.rb
71
27
  - lib/dalli/cas/client.rb
72
28
  - lib/dalli/client.rb
73
29
  - lib/dalli/compressor.rb
30
+ - lib/dalli/key_manager.rb
74
31
  - lib/dalli/options.rb
75
- - lib/dalli/railtie.rb
32
+ - lib/dalli/pid_cache.rb
33
+ - lib/dalli/pipelined_getter.rb
34
+ - lib/dalli/protocol.rb
35
+ - lib/dalli/protocol/base.rb
36
+ - lib/dalli/protocol/binary.rb
37
+ - lib/dalli/protocol/binary/request_formatter.rb
38
+ - lib/dalli/protocol/binary/response_header.rb
39
+ - lib/dalli/protocol/binary/response_processor.rb
40
+ - lib/dalli/protocol/binary/sasl_authentication.rb
41
+ - lib/dalli/protocol/connection_manager.rb
42
+ - lib/dalli/protocol/meta.rb
43
+ - lib/dalli/protocol/meta/key_regularizer.rb
44
+ - lib/dalli/protocol/meta/request_formatter.rb
45
+ - lib/dalli/protocol/meta/response_processor.rb
46
+ - lib/dalli/protocol/response_buffer.rb
47
+ - lib/dalli/protocol/server_config_parser.rb
48
+ - lib/dalli/protocol/ttl_sanitizer.rb
49
+ - lib/dalli/protocol/value_compressor.rb
50
+ - lib/dalli/protocol/value_marshaller.rb
51
+ - lib/dalli/protocol/value_serializer.rb
76
52
  - lib/dalli/ring.rb
77
53
  - lib/dalli/server.rb
54
+ - lib/dalli/servers_arg_normalizer.rb
78
55
  - lib/dalli/socket.rb
79
56
  - lib/dalli/version.rb
80
57
  - lib/rack/session/dalli.rb
81
- - test/benchmark_test.rb
82
- - test/helper.rb
83
- - test/memcached_mock.rb
84
- - test/sasldb
85
- - test/test_active_support.rb
86
- - test/test_cas_client.rb
87
- - test/test_compressor.rb
88
- - test/test_dalli.rb
89
- - test/test_encoding.rb
90
- - test/test_failover.rb
91
- - test/test_network.rb
92
- - test/test_rack_session.rb
93
- - test/test_ring.rb
94
- - test/test_sasl.rb
95
- - test/test_serializer.rb
96
- - test/test_server.rb
97
- homepage: http://github.com/mperham/dalli
58
+ homepage: https://github.com/petergoldstein/dalli
98
59
  licenses:
99
60
  - MIT
100
- metadata: {}
101
- post_install_message:
102
- rdoc_options:
103
- - "--charset=UTF-8"
61
+ metadata:
62
+ rubygems_mfa_required: 'true'
63
+ post_install_message:
64
+ rdoc_options: []
104
65
  require_paths:
105
66
  - lib
106
67
  required_ruby_version: !ruby/object:Gem::Requirement
107
68
  requirements:
108
69
  - - ">="
109
70
  - !ruby/object:Gem::Version
110
- version: '0'
71
+ version: '2.6'
111
72
  required_rubygems_version: !ruby/object:Gem::Requirement
112
73
  requirements:
113
74
  - - ">="
114
75
  - !ruby/object:Gem::Version
115
76
  version: '0'
116
77
  requirements: []
117
- rubyforge_project:
118
- rubygems_version: 2.2.2
119
- signing_key:
78
+ rubygems_version: 3.4.5
79
+ signing_key:
120
80
  specification_version: 4
121
81
  summary: High performance memcached client for Ruby
122
- test_files:
123
- - test/benchmark_test.rb
124
- - test/helper.rb
125
- - test/memcached_mock.rb
126
- - test/sasldb
127
- - test/test_active_support.rb
128
- - test/test_cas_client.rb
129
- - test/test_compressor.rb
130
- - test/test_dalli.rb
131
- - test/test_encoding.rb
132
- - test/test_failover.rb
133
- - test/test_network.rb
134
- - test/test_rack_session.rb
135
- - test/test_ring.rb
136
- - test/test_sasl.rb
137
- - test/test_serializer.rb
138
- - test/test_server.rb
82
+ test_files: []
data/Performance.md DELETED
@@ -1,42 +0,0 @@
1
- Performance
2
- ====================
3
-
4
- Caching is all about performance, so I carefully track Dalli performance to ensure no regressions.
5
- You can optionally use kgio to give Dalli a 10-20% performance boost: `gem install kgio`.
6
-
7
- Note I've added some benchmarks over time to Dalli that the other libraries don't necessarily have.
8
-
9
- memcache-client
10
- ---------------
11
-
12
- Testing 1.8.5 with ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin11.2.0]
13
-
14
- user system total real
15
- set:plain:memcache-client 1.860000 0.310000 2.170000 ( 2.188030)
16
- set:ruby:memcache-client 1.830000 0.290000 2.120000 ( 2.130212)
17
- get:plain:memcache-client 1.830000 0.340000 2.170000 ( 2.176156)
18
- get:ruby:memcache-client 1.900000 0.330000 2.230000 ( 2.235045)
19
- multiget:ruby:memcache-client 0.860000 0.120000 0.980000 ( 0.987348)
20
- missing:ruby:memcache-client 1.630000 0.320000 1.950000 ( 1.954867)
21
- mixed:ruby:memcache-client 3.690000 0.670000 4.360000 ( 4.364469)
22
-
23
-
24
- dalli
25
- -----
26
-
27
- Testing with Rails 3.2.1
28
- Using kgio socket IO
29
- Testing 2.0.0 with ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-darwin11.3.0]
30
-
31
- user system total real
32
- mixed:rails:dalli 1.580000 0.570000 2.150000 ( 3.008839)
33
- set:plain:dalli 0.730000 0.300000 1.030000 ( 1.567098)
34
- setq:plain:dalli 0.520000 0.120000 0.640000 ( 0.634402)
35
- set:ruby:dalli 0.800000 0.300000 1.100000 ( 1.640348)
36
- get:plain:dalli 0.840000 0.330000 1.170000 ( 1.668425)
37
- get:ruby:dalli 0.850000 0.330000 1.180000 ( 1.665716)
38
- multiget:ruby:dalli 0.700000 0.260000 0.960000 ( 0.965423)
39
- missing:ruby:dalli 0.720000 0.320000 1.040000 ( 1.511720)
40
- mixed:ruby:dalli 1.660000 0.640000 2.300000 ( 3.320743)
41
- mixedq:ruby:dalli 1.630000 0.510000 2.140000 ( 2.629734)
42
- incr:ruby:dalli 0.270000 0.100000 0.370000 ( 0.547618)
data/Rakefile DELETED
@@ -1,42 +0,0 @@
1
- require 'appraisal'
2
- require 'rake/testtask'
3
- Rake::TestTask.new(:test) do |test|
4
- test.libs << 'test'
5
- test.pattern = 'test/**/test_*.rb'
6
- test.warning = true
7
- test.verbose = true
8
- end
9
-
10
- Rake::TestTask.new(:bench) do |test|
11
- test.libs << 'test'
12
- test.pattern = 'test/benchmark_test.rb'
13
- end
14
-
15
- begin
16
- require 'metric_fu'
17
- MetricFu::Configuration.run do |config|
18
- config.rcov[:rcov_opts] << "-Itest:lib"
19
- end
20
- rescue LoadError
21
- end
22
-
23
- task :default => :test
24
-
25
- task :test_all do
26
- system('rake test RAILS_VERSION="~> 3.0.0"')
27
- system('rake test RAILS_VERSION=">= 3.0.0"')
28
- end
29
-
30
- # 'gem install rdoc' to upgrade RDoc if this is giving you errors
31
- begin
32
- require 'rdoc/task'
33
- RDoc::Task.new do |rd|
34
- rd.rdoc_files.include("lib/**/*.rb")
35
- end
36
- rescue LoadError
37
- puts "Unable to load rdoc, run 'gem install rdoc' to fix this."
38
- end
39
-
40
- require 'rake/clean'
41
- CLEAN.include "**/*.rbc"
42
- CLEAN.include "**/.DS_Store"
data/dalli.gemspec DELETED
@@ -1,29 +0,0 @@
1
- require './lib/dalli/version'
2
-
3
- Gem::Specification.new do |s|
4
- s.name = %q{dalli}
5
- s.version = Dalli::VERSION
6
- s.license = "MIT"
7
-
8
- s.authors = ["Mike Perham"]
9
- s.description = %q{High performance memcached client for Ruby}
10
- s.email = %q{mperham@gmail.com}
11
- s.files = Dir.glob("lib/**/*") + [
12
- "LICENSE",
13
- "README.md",
14
- "History.md",
15
- "Rakefile",
16
- "Gemfile",
17
- "dalli.gemspec",
18
- "Performance.md",
19
- ]
20
- s.homepage = %q{http://github.com/mperham/dalli}
21
- s.rdoc_options = ["--charset=UTF-8"]
22
- s.require_paths = ["lib"]
23
- s.summary = %q{High performance memcached client for Ruby}
24
- s.test_files = Dir.glob("test/**/*")
25
- s.add_development_dependency(%q<minitest>, [">= 4.2.0"])
26
- s.add_development_dependency(%q<mocha>, [">= 0"])
27
- s.add_development_dependency(%q<rails>, ["~> 4"])
28
- end
29
-
@@ -1,81 +0,0 @@
1
- require 'active_support/cache'
2
- require 'action_dispatch/middleware/session/abstract_store'
3
- require 'dalli'
4
-
5
- # Dalli-based session store for Rails 3.0.
6
- module ActionDispatch
7
- module Session
8
- class DalliStore < AbstractStore
9
- def initialize(app, options = {})
10
- # Support old :expires option
11
- options[:expire_after] ||= options[:expires]
12
-
13
- super
14
-
15
- @default_options = { :namespace => 'rack:session' }.merge(@default_options)
16
-
17
- @pool = options[:cache] || begin
18
- Dalli::Client.new(
19
- @default_options[:memcache_server], @default_options)
20
- end
21
- @namespace = @default_options[:namespace]
22
-
23
- @raise_errors = !!@default_options[:raise_errors]
24
-
25
- super
26
- end
27
-
28
- def reset
29
- @pool.reset
30
- end
31
-
32
- private
33
-
34
- def get_session(env, sid)
35
- sid = generate_sid unless sid and !sid.empty?
36
- begin
37
- session = @pool.get(sid) || {}
38
- rescue Dalli::DalliError => ex
39
- # re-raise ArgumentError so Rails' session abstract_store.rb can autoload any missing models
40
- raise ArgumentError, ex.message if ex.message =~ /unmarshal/
41
- Rails.logger.warn("Session::DalliStore#get: #{ex.message}")
42
- session = {}
43
- end
44
- [sid, session]
45
- end
46
-
47
- def set_session(env, sid, session_data, options = nil)
48
- options ||= env[ENV_SESSION_OPTIONS_KEY]
49
- expiry = options[:expire_after]
50
- @pool.set(sid, session_data, expiry)
51
- sid
52
- rescue Dalli::DalliError
53
- Rails.logger.warn("Session::DalliStore#set: #{$!.message}")
54
- raise if @raise_errors
55
- false
56
- end
57
-
58
- def destroy_session(env, session_id, options)
59
- begin
60
- @pool.delete(session_id)
61
- rescue Dalli::DalliError
62
- Rails.logger.warn("Session::DalliStore#destroy_session: #{$!.message}")
63
- raise if @raise_errors
64
- end
65
- return nil if options[:drop]
66
- generate_sid
67
- end
68
-
69
- def destroy(env)
70
- if sid = current_session_id(env)
71
- @pool.delete(sid)
72
- end
73
- rescue Dalli::DalliError
74
- Rails.logger.warn("Session::DalliStore#destroy: #{$!.message}")
75
- raise if @raise_errors
76
- false
77
- end
78
-
79
- end
80
- end
81
- end