memcache-client-stats 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,4 +1,8 @@
1
- = 1.0
2
- === 3rd July, 2006
1
+ *1.1.0* (July 6th, 2006)
2
+
3
+ * Expanded the abilities to be able to query different memcache stat types (malloc, items, slabs) as well as specific keys. [Chris Wanstrath]
4
+
5
+
6
+ *1.0.0* (July 3rd, 2006)
3
7
 
4
8
  * Initial checkin.
data/README CHANGED
@@ -76,8 +76,39 @@ You can then query the cluster for the stats. You can request all the stats for
76
76
 
77
77
  Or you can request a single stat from all servers:
78
78
 
79
- >> CACHE.stats('bytes')
79
+ >> CACHE.stats(:key => 'bytes')
80
80
  => {"192.168.0.53:11211" = >"211985845", "192.168.0.50:11211" => "210776435"}
81
+
82
+ You can also specify which type of stats you'd like to receive:
83
+
84
+ >> CACHE.stats(:type => 'items')
85
+ => {"192.168.0.100:11211" =>
86
+ {"fastbin_space"=>"0",
87
+ "mmapped_space"=>"233046016",
88
+ "releasable_space"=>"1504",
89
+ "arena_size"=>"1724416",
90
+ "mmapped_regions"=>"224",
91
+ "fastbin_blocks"=>"0",
92
+ "total_free"=>"446832",
93
+ "free_chunks"=>"33",
94
+ "total_alloc"=>"1277584",
95
+ "max_total_alloc"=>"0"
96
+ },
97
+ "192.168.0.101:11211" =>
98
+ {"fastbin_space"=>"0",
99
+ "mmapped_space"=>"215797760",
100
+ "releasable_space"=>"3920",
101
+ "arena_size"=>"1781760",
102
+ "mmapped_regions"=>"205",
103
+ "fastbin_blocks"=>"0",
104
+ "total_free"=>"209200",
105
+ "free_chunks"=>"28",
106
+ "total_alloc"=>"1572560",
107
+ "max_total_alloc"=>"0"
108
+ }
109
+ }
110
+
111
+ Valid stat types (besides the default): slabs malloc items
81
112
 
82
113
  You can also have the client summarize the statistic across the cluster:
83
114
 
@@ -85,6 +116,11 @@ You can also have the client summarize the statistic across the cluster:
85
116
  => 2114039
86
117
  >> CACHE.summed_stat('bytes') / 1.megabyte
87
118
  => 403
119
+
120
+ This works with an optional second parameter specifying the type, as well:
121
+
122
+ >> CACHE.summed_stat('arena_size', 'malloc')
123
+ => 5177344
88
124
 
89
125
  === Using memcache-client-stats with Rails
90
126
 
@@ -96,4 +132,4 @@ You can configure Rails to use memcache-client by adding the following to config
96
132
  require 'memcache_client_stats'
97
133
  CACHE = MemCache.load_config("#{RAILS_ROOT}/config/memcache.yml")
98
134
  config.action_controller.session_store = :mem_cache_store
99
- ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS.merge! :cache => CACHE
135
+ ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS.merge! :cache => CACHE
data/Rakefile CHANGED
@@ -6,7 +6,7 @@ require 'fileutils'
6
6
  include FileUtils
7
7
 
8
8
  NAME = "memcache-client-stats"
9
- VERS = "1.0.0"
9
+ VERS = "1.1.0"
10
10
  TITLE = "memcache-client-stats Documentation"
11
11
  CLEAN.include ['**/.*.sw?', '*.gem', '.config']
12
12
  RDOC_OPTS = ['--quiet', '--title', TITLE,
@@ -1,4 +1,6 @@
1
1
  class MemCache
2
+ STAT_TYPES = %w[items malloc slabs]
3
+
2
4
  # Extends the MemCache::Server object so that is is able to request stats.
3
5
  class Server
4
6
  # Returns a unique key for the server.
@@ -12,12 +14,16 @@ class MemCache
12
14
  end
13
15
 
14
16
  # Returns a hash of <tt>{stat_key => value, ...}</tt> for all of the Server stats.
15
- def stats
17
+ def stats(type = nil)
18
+ unless type.nil? || STAT_TYPES.include?(type)
19
+ raise MemCacheError, "Not a valid stat type. Valid stat types are: #{STAT_TYPES * ', '}"
20
+ end
21
+
16
22
  sock = socket!
17
23
 
18
24
  stats = {}
19
25
  begin
20
- sock.write "stats\r\n"
26
+ sock.write "stats#{type ? ' ' + type : nil}\r\n"
21
27
 
22
28
  # Loop through the status which are sent back in the format of:
23
29
  # STAT <name> <value>\r\n
@@ -37,4 +43,4 @@ class MemCache
37
43
  stats
38
44
  end
39
45
  end
40
- end
46
+ end
@@ -1,18 +1,36 @@
1
1
  class MemCache
2
2
  # Creates a hash for the stat(s) for all of the active servers.
3
3
  #
4
- # If <tt>key</tt> is <tt>nil</tt> then the returned hash will be in the form of
4
+ # By default, the returned hash will be in the form of
5
5
  # <tt>{server1 => {stat_key => value, ...}, server2 => {stat_key => value, ...}, ...}</tt>
6
6
  # for all of the servers and stats.
7
7
  #
8
- # If <tt>key</tt> is not <tt>nil</tt> then the returned hash will be in the form of
8
+ # Stats accepts a hash of optional arguments:
9
+ #
10
+ # If <tt>:key</tt> is not <tt>nil</tt> then the returned hash will be in the form of
9
11
  # <tt>{server1 => value, server2 => value, ...}</tt> for all servers for the single requested stat.
10
- def stats(key = nil)
12
+ #
13
+ # i.e. <tt>CACHE.stats(:key => 'bytes')</tt>
14
+ #
15
+ # If <tt>:type</tt> is not <tt>nil</tt>, the passed <tt>stats</tt> type will be returned as a hash.
16
+ #
17
+ # i.e. <tt>CACHE.stats(:type => 'slabs')</tt>
18
+ #
19
+ # Valid <tt>:type</tt> options are: slabs malloc items
20
+ #
21
+ # _Deprecation_ _notice_: if <tt>options</tt> is not a hash then it will be used as the key.
22
+ # Please note that this usage is considered deprecated and will possibily be removed in future versions.
23
+ #
24
+ # i.e. <tt>CACHE.stats('bytes')</tt>
25
+ def stats(options = {})
11
26
  stats = {}
12
27
 
28
+ key = options.is_a?(Hash) ? options[:key] : options
29
+ type = options[:type] if options.is_a?(Hash)
30
+
13
31
  @mutex.synchronize do
14
32
  raise MemCacheError, "No active servers" unless self.active?
15
- @servers.each {|server| stats[server.key] = server.stats}
33
+ @servers.each {|server| stats[server.key] = server.stats(type)}
16
34
  end
17
35
 
18
36
  unless key.nil?
@@ -26,7 +44,9 @@ class MemCache
26
44
 
27
45
  # Returns a summed value for the requested stat. This is useful for determining things such
28
46
  # as the global number of <tt>curr_items</tt> or <tt>bytes</tt>.
29
- def summed_stat(key)
30
- stats(key).values.inject(0) {|sum, value| sum + value.to_i}
47
+ #
48
+ # Can optionally be passed a <tt>type</tt> as a second parameter.
49
+ def summed_stat(key, type = nil)
50
+ stats({:key => key, :type => type}).values.inject(0) {|sum, value| sum + value.to_i}
31
51
  end
32
52
  end
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.11
3
3
  specification_version: 1
4
4
  name: memcache-client-stats
5
5
  version: !ruby/object:Gem::Version
6
- version: 1.0.0
7
- date: 2006-07-03 00:00:00 -07:00
6
+ version: 1.1.0
7
+ date: 2006-07-06 00:00:00 -07:00
8
8
  summary: Query MemCache server stats through memcache-client
9
9
  require_paths:
10
10
  - lib
@@ -31,10 +31,10 @@ files:
31
31
  - COPYING
32
32
  - README
33
33
  - Rakefile
34
- - lib/memcache_stats.rb
35
- - lib/memcache_client_stats.rb
36
34
  - lib/memcache_config.rb
37
35
  - lib/memcache_server.rb
36
+ - lib/memcache_stats.rb
37
+ - lib/memcache_client_stats.rb
38
38
  - CHANGELOG
39
39
  test_files: []
40
40