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.
- checksums.yaml +5 -5
- data/{History.md → CHANGELOG.md} +231 -0
- data/Gemfile +14 -5
- data/LICENSE +1 -1
- data/README.md +33 -201
- data/lib/dalli/cas/client.rb +2 -57
- data/lib/dalli/client.rb +259 -254
- data/lib/dalli/compressor.rb +13 -2
- data/lib/dalli/key_manager.rb +121 -0
- data/lib/dalli/options.rb +7 -7
- data/lib/dalli/pid_cache.rb +40 -0
- data/lib/dalli/pipelined_getter.rb +177 -0
- data/lib/dalli/protocol/base.rb +239 -0
- data/lib/dalli/protocol/binary/request_formatter.rb +117 -0
- data/lib/dalli/protocol/binary/response_header.rb +36 -0
- data/lib/dalli/protocol/binary/response_processor.rb +239 -0
- data/lib/dalli/protocol/binary/sasl_authentication.rb +60 -0
- data/lib/dalli/protocol/binary.rb +173 -0
- data/lib/dalli/protocol/connection_manager.rb +254 -0
- data/lib/dalli/protocol/meta/key_regularizer.rb +31 -0
- data/lib/dalli/protocol/meta/request_formatter.rb +121 -0
- data/lib/dalli/protocol/meta/response_processor.rb +211 -0
- data/lib/dalli/protocol/meta.rb +178 -0
- data/lib/dalli/protocol/response_buffer.rb +54 -0
- data/lib/dalli/protocol/server_config_parser.rb +86 -0
- data/lib/dalli/protocol/ttl_sanitizer.rb +45 -0
- data/lib/dalli/protocol/value_compressor.rb +85 -0
- data/lib/dalli/protocol/value_marshaller.rb +59 -0
- data/lib/dalli/protocol/value_serializer.rb +91 -0
- data/lib/dalli/protocol.rb +8 -0
- data/lib/dalli/ring.rb +97 -86
- data/lib/dalli/server.rb +4 -694
- data/lib/dalli/servers_arg_normalizer.rb +54 -0
- data/lib/dalli/socket.rb +122 -80
- data/lib/dalli/version.rb +5 -1
- data/lib/dalli.rb +45 -14
- data/lib/rack/session/dalli.rb +162 -42
- metadata +40 -96
- data/Performance.md +0 -42
- data/Rakefile +0 -42
- data/dalli.gemspec +0 -29
- data/lib/action_dispatch/middleware/session/dalli_store.rb +0 -81
- data/lib/active_support/cache/dalli_store.rb +0 -363
- data/lib/dalli/railtie.rb +0 -7
- data/test/benchmark_test.rb +0 -242
- data/test/helper.rb +0 -55
- data/test/memcached_mock.rb +0 -121
- data/test/sasldb +0 -1
- data/test/test_active_support.rb +0 -439
- data/test/test_cas_client.rb +0 -107
- data/test/test_compressor.rb +0 -53
- data/test/test_dalli.rb +0 -625
- data/test/test_encoding.rb +0 -32
- data/test/test_failover.rb +0 -128
- data/test/test_network.rb +0 -54
- data/test/test_rack_session.rb +0 -341
- data/test/test_ring.rb +0 -85
- data/test/test_sasl.rb +0 -110
- data/test/test_serializer.rb +0 -30
- 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.
|
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:
|
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:
|
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/
|
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
|
-
|
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
|
-
|
102
|
-
|
103
|
-
|
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: '
|
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
|
-
|
118
|
-
|
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
|