fiveruns-fiveruns-memcache-client 1.5.0.2 → 1.5.0.3
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.
- data/History.txt +4 -0
- data/README.txt +9 -9
- data/ext/crc32/crc32.c +28 -0
- data/ext/crc32/extconf.rb +5 -0
- data/lib/memcache.rb +23 -15
- metadata +6 -5
data/History.txt
CHANGED
data/README.txt
CHANGED
@@ -1,26 +1,21 @@
|
|
1
1
|
= memcache-client
|
2
2
|
|
3
|
+
This is the FiveRuns fork of seattle.rb's memcache-client 1.5.0. We've fixed several bugs
|
4
|
+
which are in that version.
|
5
|
+
|
3
6
|
Rubyforge Project:
|
4
7
|
|
5
8
|
http://rubyforge.org/projects/seattlerb
|
6
9
|
|
7
|
-
File bugs:
|
8
|
-
|
9
|
-
http://rubyforge.org/tracker/?func=add&group_id=1513&atid=5921
|
10
|
-
|
11
10
|
Documentation:
|
12
11
|
|
13
12
|
http://seattlerb.org/memcache-client
|
14
13
|
|
15
|
-
== About
|
16
|
-
|
17
|
-
memcache-client is a client for Danga Interactive's memcached.
|
18
|
-
|
19
14
|
== Installing memcache-client
|
20
15
|
|
21
16
|
Just install the gem:
|
22
17
|
|
23
|
-
$ sudo gem install memcache-client
|
18
|
+
$ sudo gem install fiveruns-memcache-client --source http://gems.github.com
|
24
19
|
|
25
20
|
== Using memcache-client
|
26
21
|
|
@@ -52,3 +47,8 @@ use with Rails. To use it be sure to assign your memcache connection to
|
|
52
47
|
CACHE. Cache returns nil on all memcache errors so you don't have to rescue
|
53
48
|
the errors yourself. It has #get, #put and #delete module functions.
|
54
49
|
|
50
|
+
=== Improving Performance ===
|
51
|
+
|
52
|
+
Performing the CRC-32 ITU-T step to determine which server to use for a given key
|
53
|
+
is VERY slow in Ruby. RubyGems should compile a native library for performing this
|
54
|
+
operation when the gem is installed.
|
data/ext/crc32/crc32.c
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
#include "ruby.h"
|
2
|
+
#include "stdio.h"
|
3
|
+
|
4
|
+
static VALUE t_itu_t(VALUE self, VALUE string) {
|
5
|
+
VALUE str = StringValue(string);
|
6
|
+
int n = RSTRING(str)->len;
|
7
|
+
char* p = RSTRING(str)->ptr;
|
8
|
+
unsigned long r = 0xFFFFFFFF;
|
9
|
+
int i, j;
|
10
|
+
|
11
|
+
for (i = 0; i < n; i++) {
|
12
|
+
r = r ^ p[i];
|
13
|
+
for (j = 0; j < 8; j++) {
|
14
|
+
if ( (r & 1) != 0 ) {
|
15
|
+
r = (r >> 1) ^ 0xEDB88320;
|
16
|
+
} else {
|
17
|
+
r = r >> 1;
|
18
|
+
}
|
19
|
+
}
|
20
|
+
}
|
21
|
+
return INT2FIX(r ^ 0xFFFFFFFF);
|
22
|
+
}
|
23
|
+
|
24
|
+
VALUE cCRC32;
|
25
|
+
void Init_crc32() {
|
26
|
+
cCRC32 = rb_define_module("CRC32");
|
27
|
+
rb_define_module_function(cCRC32, "itu_t", t_itu_t, 1);
|
28
|
+
}
|
data/lib/memcache.rb
CHANGED
@@ -9,25 +9,33 @@ class String
|
|
9
9
|
|
10
10
|
##
|
11
11
|
# Uses the ITU-T polynomial in the CRC32 algorithm.
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
12
|
+
begin
|
13
|
+
require 'crc32'
|
14
|
+
def crc32_ITU_T
|
15
|
+
CRC32.itu_t(self)
|
16
|
+
end
|
17
|
+
rescue LoadError => e
|
18
|
+
puts "Loading with slow CRC32 ITU-T implementation: #{e.message}"
|
19
|
+
|
20
|
+
def crc32_ITU_T
|
21
|
+
n = length
|
22
|
+
r = 0xFFFFFFFF
|
23
|
+
|
24
|
+
n.times do |i|
|
25
|
+
r ^= self[i]
|
26
|
+
8.times do
|
27
|
+
if (r & 1) != 0 then
|
28
|
+
r = (r>>1) ^ 0xEDB88320
|
29
|
+
else
|
30
|
+
r >>= 1
|
31
|
+
end
|
24
32
|
end
|
25
33
|
end
|
26
|
-
end
|
27
34
|
|
28
|
-
|
35
|
+
r ^ 0xFFFFFFFF
|
36
|
+
end
|
29
37
|
end
|
30
|
-
|
38
|
+
|
31
39
|
end
|
32
40
|
|
33
41
|
##
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fiveruns-fiveruns-memcache-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.0.
|
4
|
+
version: 1.5.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Hodel
|
@@ -11,7 +11,7 @@ autorequire:
|
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
13
|
|
14
|
-
date: 2008-
|
14
|
+
date: 2008-06-25 00:00:00 -07:00
|
15
15
|
default_executable:
|
16
16
|
dependencies: []
|
17
17
|
|
@@ -19,8 +19,8 @@ description: A Ruby-based memcached client library
|
|
19
19
|
email: mike@fiveruns.com
|
20
20
|
executables: []
|
21
21
|
|
22
|
-
extensions:
|
23
|
-
|
22
|
+
extensions:
|
23
|
+
- ext/crc32/extconf.rb
|
24
24
|
extra_rdoc_files: []
|
25
25
|
|
26
26
|
files:
|
@@ -30,6 +30,7 @@ files:
|
|
30
30
|
- Rakefile
|
31
31
|
- lib/memcache.rb
|
32
32
|
- lib/memcache_util.rb
|
33
|
+
- ext/crc32/crc32.c
|
33
34
|
has_rdoc: false
|
34
35
|
homepage: http://github.com/fiveruns/memcache-client
|
35
36
|
post_install_message:
|
@@ -52,7 +53,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
52
53
|
requirements: []
|
53
54
|
|
54
55
|
rubyforge_project:
|
55
|
-
rubygems_version: 1.0
|
56
|
+
rubygems_version: 1.2.0
|
56
57
|
signing_key:
|
57
58
|
specification_version: 2
|
58
59
|
summary: A Ruby-based memcached client library
|