spymemcached.jruby 1.0.10-java → 1.0.11-java

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8eb6188bd806396129dbd6186e427323e48454e2
4
- data.tar.gz: f30b1e50f0d2630ef62eac42553f6f09d5e6a6be
3
+ metadata.gz: 06b5837f82e9d9ac407c2c5fe0bb5ee5daf8a3b0
4
+ data.tar.gz: 3edb71d0e84508cb9447ea68a4cf1a8f9bb44f27
5
5
  SHA512:
6
- metadata.gz: 462954604f84eca014be63ab9048356d8571e26fca26feb204c984ae0dbc8ba8aec38d66fd5c44db8288cdaa8a466dff3640b6aa81b9c72f27f900e6764db111
7
- data.tar.gz: eef22bc388f1ed4450b4b8928b554c7efeb4bd41aa597e2180d2145d0665314692ce02b7f73ebb31fb7f1fef85ea64ed43b2bd73d1b57386da6eb97d850c20cf
6
+ metadata.gz: e48238823c00d32dd5ba47ed7efc66b9c101a202f26132a9c2d5fa8eb4f0cf0376b8333d49a4b64ae03aab85189511583c9ab01ca4b74dc977567a894e598d86
7
+ data.tar.gz: be02cf6b0e7c8959424e73b777d5b0bfabf867feea3640fcf6dd7980143d67891e67187c337a2de0bab78148efac7fcedb8fe16b375665012e91d632aee58cfd
data/README.md CHANGED
@@ -22,9 +22,10 @@ Setup multiple servers with options
22
22
 
23
23
  Valid +options+ are:
24
24
 
25
- [:namespace] Prepends this value to all keys added or retrieved.
26
- [:timeout] Time to use as the socket read timeout, seconds. Defaults to 0.5 sec.
27
- [:binary] Talks binary protocol with Memcached server. Default to true.
25
+ [:namespace] Prepends this value to all keys added or retrieved.
26
+ [:timeout] Time to use as the socket read timeout, seconds. Defaults to 0.5 sec.
27
+ [:binary] Talks binary protocol with Memcached server. Default to true.
28
+ [:should_optimize] If true, Spymemcached low-level optimization is in effect. Default to false.
28
29
 
29
30
  ### Rails 4
30
31
 
@@ -40,19 +41,6 @@ Use [spymemcached_store](https://github.com/ThoughtWorksStudios/spymemcached_sto
40
41
  require 'spymemcached'
41
42
  ActionController::Base.cache_store = :mem_cache_store, Spymemcached.new(servers, options).rails23
42
43
 
43
- ## Compatibility
44
-
45
- The most important different between spymemcached.jruby and other non spymemcached backended memcache client is the support of option :raw.
46
-
47
- As Spymemcached provides mechanism to encode and decode cache data, spymemcached.jruby does marshal dump & load for Ruby object in Java except Ruby string and integer.
48
-
49
- Any Ruby String or Integer type cache data will be directly converted to Java String or Integer.
50
-
51
- Hence we don't consider :raw option in spymemcached.jruby.
52
-
53
- However, Rails cache store supports :raw option too when doing read and write on local cache.
54
- This behaviour is kept as I'm not sure what to do with it. I'm happy to fix it if you found anything wrong with it.
55
-
56
44
  ## Default behaviors
57
45
 
58
46
  Spymemcached.jruby applies:
data/lib/spymemcached.rb CHANGED
@@ -14,7 +14,8 @@ class Spymemcached
14
14
  # default options for client
15
15
  DEFAULT_OPTIONS = {
16
16
  :timeout => 0.5, # second
17
- :binary => true
17
+ :binary => true,
18
+ :should_optimize => false
18
19
  }
19
20
 
20
21
  # Accepts a list of +servers+ and a list of +options+.
@@ -26,9 +27,10 @@ class Spymemcached
26
27
  #
27
28
  # Valid +options+ are:
28
29
  #
29
- # [:namespace] Prepends this value to all keys added or retrieved.
30
- # [:timeout] Time to use as the socket read timeout, seconds. Defaults to 0.5 sec.
31
- # [:binary] Talks binary protocol with Memcached server. Default to true.
30
+ # [:namespace] Prepends this value to all keys added or retrieved. Default to nil.
31
+ # [:timeout] Time to use as the socket read timeout, seconds. Default to 0.5 sec.
32
+ # [:binary] Talks binary protocol with Memcached server. Default to true.
33
+ # [:should_optimize] If true, Spymemcached low-level optimization is in effect. Default to false.
32
34
  #
33
35
  # Logger: see Spymemcached for how to turn on detail log
34
36
  #
@@ -61,21 +63,21 @@ class Spymemcached
61
63
  Hash[@client.get_multi(key_map.keys).map {|k, v| [key_map[k], v]}]
62
64
  end
63
65
 
64
- def add(key, value, ttl=0)
65
- @client.add(encode(key), value, ttl)
66
+ def add(key, value, ttl=0, opts={})
67
+ @client.add(encode(key), value, ttl, opts[:raw])
66
68
  end
67
69
 
68
- def set(key, value, ttl=0)
69
- @client.set(encode(key), value, ttl)
70
+ def set(key, value, ttl=0, opts={})
71
+ @client.set(encode(key), value, ttl, opts[:raw])
70
72
  end
71
73
  alias :[]= :set
72
74
 
73
- def cas(key, ttl=0, &block)
74
- @client.cas(encode(key), ttl, &block)
75
+ def cas(key, ttl=0, opts={}, &block)
76
+ @client.cas(encode(key), ttl, opts[:raw], &block)
75
77
  end
76
78
 
77
- def replace(key, value, ttl=0)
78
- @client.replace(encode(key), value, ttl)
79
+ def replace(key, value, ttl=0, opts={})
80
+ @client.replace(encode(key), value, ttl, opts[:raw])
79
81
  end
80
82
 
81
83
  def delete(key)
@@ -91,11 +93,11 @@ class Spymemcached
91
93
  end
92
94
 
93
95
  def append(key, value)
94
- @client.append(encode(key), value)
96
+ @client.append(encode(key), value.to_s)
95
97
  end
96
98
 
97
99
  def prepend(key, value)
98
- @client.prepend(encode(key), value)
100
+ @client.prepend(encode(key), value.to_s)
99
101
  end
100
102
 
101
103
  def touch(key, ttl=0)
@@ -25,12 +25,12 @@ class Spymemcached
25
25
  op(:get, key)
26
26
  end
27
27
 
28
- def add(key, value, ttl=0, *args)
29
- op(:add, key, value, ttl) ? Response::STORED : Response::NOT_STORED
28
+ def add(key, value, ttl=0, raw=false)
29
+ op(:add, key, value, ttl, opts(raw)) ? Response::STORED : Response::NOT_STORED
30
30
  end
31
31
 
32
- def set(key, value, ttl=0, *args)
33
- op(:set, key, value, ttl) ? Response::STORED : Response::NOT_STORED
32
+ def set(key, value, ttl=0, raw=false)
33
+ op(:set, key, value, ttl, opts(raw)) ? Response::STORED : Response::NOT_STORED
34
34
  end
35
35
 
36
36
  def delete(key, *args)
@@ -54,6 +54,10 @@ class Spymemcached
54
54
  end
55
55
 
56
56
  private
57
+ def opts(raw)
58
+ raw.is_a?(Hash) ? raw : {:raw => raw}
59
+ end
60
+
57
61
  def op(name, *args, &block)
58
62
  @client.send(name, *args, &block)
59
63
  rescue Spymemcached::Error => e
Binary file
data/test/m.png ADDED
Binary file
@@ -39,7 +39,7 @@ class SpymemcachedBinaryProtocolTest < Test::Unit::TestCase
39
39
  end
40
40
 
41
41
  def test_incr_and_decr
42
- @client.add('key', '0')
42
+ @client.add('key', '0', 0, :raw => true)
43
43
  assert_equal 0, @client.incr('key', 0)
44
44
  @client.incr('key')
45
45
  assert_equal 1, @client.incr('key', 0)
@@ -47,16 +47,16 @@ class SpymemcachedBinaryProtocolTest < Test::Unit::TestCase
47
47
  assert_equal 6, @client.incr('key', 0)
48
48
  assert_equal '6', @client.get('key')
49
49
 
50
- @client.set('key', '6')
50
+ @client.set('key', '6', 0, :raw => true)
51
51
  @client.decr('key')
52
52
  assert_equal 5, @client.decr('key', 0)
53
53
  @client.decr('key', 3)
54
54
  assert_equal 2, @client.decr('key', 0)
55
55
 
56
- @client.replace('key', '10')
56
+ @client.replace('key', '10', 0, :raw => true)
57
57
  assert_equal 11, @client.incr('key')
58
58
 
59
- @client.cas('key') { '7' }
59
+ @client.cas('key', 0, :raw => true) { '7' }
60
60
  assert_equal 8, @client.incr('key')
61
61
 
62
62
  assert_equal 100, @client.incr('incr_key', 1, 0, 100)
@@ -115,14 +115,18 @@ class SpymemcachedBinaryProtocolTest < Test::Unit::TestCase
115
115
  end
116
116
 
117
117
  def test_append_string
118
- @client['k1'] = 'v'
118
+ @client.set('k1', 'v', 0, :raw => true)
119
119
  assert @client.append('k1', '1')
120
120
  assert_equal 'v1', @client['k1']
121
+ assert @client.append('k1', 2)
122
+ assert_equal 'v12', @client['k1']
121
123
  end
122
124
 
123
125
  def test_prepend_string
124
- @client['k1'] = 'v'
126
+ @client.set('k1', 'v', 0, :raw => true)
125
127
  assert @client.prepend('k1', '1')
126
128
  assert_equal '1v', @client['k1']
129
+ assert @client.prepend('k1', 2)
130
+ assert_equal '21v', @client['k1']
127
131
  end
128
132
  end
@@ -39,7 +39,7 @@ class SpymemcachedPlainProtocolTest < Test::Unit::TestCase
39
39
  end
40
40
 
41
41
  def test_incr_and_decr
42
- @client.add('key', '0')
42
+ @client.add('key', '0', 0, :raw => true)
43
43
  assert_equal 0, @client.incr('key', 0)
44
44
  @client.incr('key')
45
45
  assert_equal 1, @client.incr('key', 0)
@@ -47,16 +47,16 @@ class SpymemcachedPlainProtocolTest < Test::Unit::TestCase
47
47
  assert_equal 6, @client.incr('key', 0)
48
48
  assert_equal '6', @client.get('key')
49
49
 
50
- @client.set('key', '6')
50
+ @client.set('key', '6', 0, :raw => true)
51
51
  @client.decr('key')
52
52
  assert_equal 5, @client.decr('key', 0)
53
53
  @client.decr('key', 3)
54
54
  assert_equal 2, @client.decr('key', 0)
55
55
 
56
- @client.replace('key', '10')
56
+ @client.replace('key', '10', 0, :raw => true)
57
57
  assert_equal 11, @client.incr('key')
58
58
 
59
- @client.cas('key') { '7' }
59
+ @client.cas('key', 0, :raw => true) { '7' }
60
60
  assert_equal 8, @client.incr('key')
61
61
 
62
62
  assert_equal 100, @client.incr('incr_key', 1, 0, 100)
@@ -115,13 +115,13 @@ class SpymemcachedPlainProtocolTest < Test::Unit::TestCase
115
115
  end
116
116
 
117
117
  def test_append_string
118
- @client['k1'] = 'v'
118
+ @client.set('k1', 'v', 0, :raw => true)
119
119
  assert @client.append('k1', '1')
120
120
  assert_equal 'v1', @client['k1']
121
121
  end
122
122
 
123
123
  def test_prepend_string
124
- @client['k1'] = 'v'
124
+ @client.set('k1', 'v', 0, :raw => true)
125
125
  assert @client.prepend('k1', '1')
126
126
  assert_equal '1v', @client['k1']
127
127
  end
@@ -14,8 +14,8 @@ class SpymemcachedRails23Test < Test::Unit::TestCase
14
14
  assert_equal response::DELETED, @client.delete('key')
15
15
  assert_equal response::NOT_FOUND, @client.delete('key2')
16
16
 
17
- @client.set("key1", '0')
18
- @client.set("key2", '1')
17
+ @client.set("key1", '0', 0, :raw => true)
18
+ @client.set("key2", '1', 0, :raw => true)
19
19
  assert_equal({"key1" => '0', 'key2' => '1'}, @client.get_multi('key1', 'key2'))
20
20
 
21
21
  assert_equal 1, @client.incr('key1', 1, ttl=0)
@@ -25,8 +25,8 @@ class SpymemcachedRails23Test < Test::Unit::TestCase
25
25
  end
26
26
 
27
27
  def test_rails3_api_compatible
28
- @client.set("key1", '0')
29
- @client.set("key2", '1')
28
+ @client.set("key1", '0', 0, :raw => true)
29
+ @client.set("key2", '1', 0, :raw => true)
30
30
  assert_equal({"key1" => '0', 'key2' => '1'}, @client.get_multi(['key1', 'key2'], :raw => true))
31
31
  end
32
32
 
@@ -131,13 +131,14 @@ class SpymemcachedTest < Test::Unit::TestCase
131
131
  assert_equal 'v3', @client['key3']
132
132
  assert_nil @ns_client['key3']
133
133
 
134
- @ns_client.append('key2', '4')
135
- assert_equal 'v24', @ns_client.get('key2')
134
+ @ns_client.add('key5', 'v5', 0, :raw => true)
135
+ @ns_client.append('key5', '4')
136
+ assert_equal 'v54', @ns_client.get('key5')
136
137
 
137
- @ns_client.prepend('key2', '4')
138
- assert_equal '4v24', @ns_client.get('key2')
138
+ @ns_client.prepend('key5', '4')
139
+ assert_equal '4v54', @ns_client.get('key5')
139
140
 
140
- @ns_client['key2'] = '1'
141
+ @ns_client.set('key2', '1', 0, :raw => true)
141
142
  assert_equal 2, @ns_client.incr('key2')
142
143
  assert_equal 1, @ns_client.decr('key2')
143
144
 
@@ -201,4 +202,10 @@ class SpymemcachedTest < Test::Unit::TestCase
201
202
  assert client.set('key', 'value')
202
203
  assert_equal 'value', client.get('key')
203
204
  end
205
+
206
+ def test_get_set_binary_string_data
207
+ data = File.read(File.join(File.dirname(__FILE__), "m.png"))
208
+ @client.add('k', data)
209
+ assert_equal(data, @client.get('k'))
210
+ end
204
211
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spymemcached.jruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.10
4
+ version: 1.0.11
5
5
  platform: java
6
6
  authors:
7
7
  - Xiao Li
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-02 00:00:00.000000000 Z
11
+ date: 2014-11-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -71,6 +71,7 @@ files:
71
71
  - lib/spymemcached.rb
72
72
  - lib/spymemcached_adapter.jar
73
73
  - lib/spymemcached/rails23.rb
74
+ - test/m.png
74
75
  - test/memcache.rb
75
76
  - test/spymemcached_binary_protocol_test.rb
76
77
  - test/spymemcached_plain_protocol_test.rb