xunch 0.0.10.2 → 0.0.10.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/xunch/cache/cache.rb +7 -4
- data/lib/xunch/cache/cache_builder.rb +6 -0
- data/lib/xunch/codec/hash_codec.rb +3 -3
- data/lib/xunch/codec/json_codec.rb +1 -1
- data/test/cache_builder_test.rb +18 -0
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7a823df55ee04eec6dd9cb198b9219d633228e58
|
4
|
+
data.tar.gz: 8ef44351fd2de4129f2060918fdef8754d31bb41
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 36e5ac51f6ca81bb02baece72e0bf7e6720723d843df6d7d0d748bf9bfcf12846f19a9053fe70a483d5a9cbae236cbb2f2917a4cf7e045dd8f633738451d7a6e
|
7
|
+
data.tar.gz: e05efd775ea4e6b4811b0e37f48197184812dcd098350a543c16279014d4643ea6203226cd3f7f455c8f6deaea354c18032cbd535e6540515dfb25db2dd1eaf7
|
data/lib/xunch/cache/cache.rb
CHANGED
@@ -1,16 +1,19 @@
|
|
1
|
+
require 'socket'
|
1
2
|
module Xunch
|
2
3
|
class Cache
|
3
4
|
|
4
5
|
def initialize(options, shard_infos)
|
5
6
|
@options = initialize_options(options)
|
6
7
|
@shard_redis = ShardRedis.new(@options[:regex],shard_infos)
|
8
|
+
@host = Socket.gethostname
|
9
|
+
@pid = Process.pid
|
7
10
|
end
|
8
11
|
|
9
12
|
# 从缓存中删除指定的key
|
10
13
|
def evict(key)
|
11
14
|
@shard_redis.del(assembleKey(key))
|
12
15
|
end
|
13
|
-
|
16
|
+
|
14
17
|
# 从缓存中删除指定的一组key
|
15
18
|
def batch_evict(keys)
|
16
19
|
new_keys = []
|
@@ -30,7 +33,7 @@ module Xunch
|
|
30
33
|
@shard_redis.destroy
|
31
34
|
end
|
32
35
|
|
33
|
-
protected
|
36
|
+
protected
|
34
37
|
def getCacheObjectKey(value)
|
35
38
|
key = value.send(@options[:key_field_name])
|
36
39
|
raise ArgumentError("value #{value} key field can not be nil.") unless key != nil
|
@@ -44,7 +47,7 @@ module Xunch
|
|
44
47
|
|
45
48
|
def assembleTempKey(key)
|
46
49
|
name = @options[:name]
|
47
|
-
name + "_".concat(key.to_s).concat("_").concat(@options[:version].to_s).concat("_temp")
|
50
|
+
name + "_".concat(key.to_s).concat("_").concat(@options[:version].to_s).concat("_temp").concat(@host).concat(@pid)
|
48
51
|
end
|
49
52
|
|
50
53
|
def initialize_options(options)
|
@@ -65,7 +68,7 @@ module Xunch
|
|
65
68
|
version = 1
|
66
69
|
if(options["version"] != nil)
|
67
70
|
version = options["version"]
|
68
|
-
use_options.store(:version, version)
|
71
|
+
use_options.store(:version, version)
|
69
72
|
end
|
70
73
|
|
71
74
|
if(options["name"] != nil)
|
@@ -26,6 +26,9 @@ module Xunch
|
|
26
26
|
caches = {}
|
27
27
|
lazy_caches = {}
|
28
28
|
cache_configs.each_value { |cache_config|
|
29
|
+
if cache_config["type"] == nil
|
30
|
+
raise ArgumentError.new("cache type can't be nil.")
|
31
|
+
end
|
29
32
|
shard_names = cache_config["shards"].split(",")
|
30
33
|
driver = cache_config["driver"].downcase.to_sym if cache_config["driver"]
|
31
34
|
shard_infos = []
|
@@ -37,6 +40,9 @@ module Xunch
|
|
37
40
|
shard_options = {}
|
38
41
|
if driver
|
39
42
|
shard_options[:driver] = driver
|
43
|
+
if shard_options[:driver] == :synchrony and cache_config["type"].start_with?("list")
|
44
|
+
raise ArgumentError.new("list cache can't use synchrony driver.")
|
45
|
+
end
|
40
46
|
end
|
41
47
|
if cache_config["timeout"]
|
42
48
|
shard_options[:timeout] = cache_config["timeout"]
|
@@ -20,9 +20,9 @@ module Xunch
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def encode(value)
|
23
|
-
unless value.class.name
|
24
|
-
raise XunchCodecError.new("Codec error. Codec class is #{@klass}," <<
|
25
|
-
"object_id is #{@klass.object_id}, but value class is #{value.class}," <<
|
23
|
+
unless value.class.name.start_with? @klass.name
|
24
|
+
raise XunchCodecError.new("Codec error. Codec class is #{@klass}," <<
|
25
|
+
"object_id is #{@klass.object_id}, but value class is #{value.class}," <<
|
26
26
|
"object_id is #{value.class.object_id}.
|
27
27
|
value class = #{value.class.inspect} vs config class = #{@klass.inspect} ")
|
28
28
|
end
|
@@ -8,7 +8,7 @@ module Xunch
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def encode(value)
|
11
|
-
unless value.class.name
|
11
|
+
unless value.class.name.start_with? @klass.name
|
12
12
|
raise XunchCodecError.new("Codec error. Codec class is #{@klass}," <<
|
13
13
|
"object_id is #{@klass.object_id}, but value class is #{value.class}," <<
|
14
14
|
"object_id is #{value.class.object_id}.
|
data/test/cache_builder_test.rb
CHANGED
@@ -29,6 +29,24 @@ class CacheBuilderTest < Test::Unit::TestCase
|
|
29
29
|
end
|
30
30
|
}
|
31
31
|
puts "CacheBuilderTest test_build_type stop."
|
32
|
+
require 'socket'
|
33
|
+
i = 0
|
34
|
+
start = Time.now
|
35
|
+
while i < 1000000 do
|
36
|
+
Socket.gethostname
|
37
|
+
i += 1
|
38
|
+
end
|
39
|
+
stop = Time.now
|
40
|
+
puts stop - start
|
41
|
+
|
42
|
+
i = 0
|
43
|
+
start = Time.now
|
44
|
+
while i < 1000000 do
|
45
|
+
Process.pid
|
46
|
+
i += 1
|
47
|
+
end
|
48
|
+
stop = Time.now
|
49
|
+
puts stop - start
|
32
50
|
end
|
33
51
|
|
34
52
|
def teardown
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xunch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.10.
|
4
|
+
version: 0.0.10.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ted Wang
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-04-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: redis
|
@@ -44,6 +44,7 @@ executables: []
|
|
44
44
|
extensions: []
|
45
45
|
extra_rdoc_files: []
|
46
46
|
files:
|
47
|
+
- lib/xunch.rb
|
47
48
|
- lib/xunch/cache/cache.rb
|
48
49
|
- lib/xunch/cache/cache_builder.rb
|
49
50
|
- lib/xunch/cache/field_object_cache.rb
|
@@ -56,18 +57,17 @@ files:
|
|
56
57
|
- lib/xunch/codec/json_codec.rb
|
57
58
|
- lib/xunch/connection/fiber_redis_pool.rb
|
58
59
|
- lib/xunch/connection/threaded_redis_pool.rb
|
60
|
+
- lib/xunch/shard/ThreadedRedisPool.rb
|
59
61
|
- lib/xunch/shard/redis.rb
|
60
62
|
- lib/xunch/shard/shard_info.rb
|
61
63
|
- lib/xunch/shard/shard_redis.rb
|
62
64
|
- lib/xunch/shard/sharded.rb
|
63
|
-
- lib/xunch/shard/ThreadedRedisPool.rb
|
64
65
|
- lib/xunch/utils/exceptions.rb
|
65
66
|
- lib/xunch/utils/nginx_cache_helper.rb
|
66
67
|
- lib/xunch/utils/rb_tree.rb
|
67
68
|
- lib/xunch/utils/rb_tree_node.rb
|
68
69
|
- lib/xunch/utils/types.rb
|
69
70
|
- lib/xunch/utils/utils.rb
|
70
|
-
- lib/xunch.rb
|
71
71
|
- test/cache_builder_test.rb
|
72
72
|
- test/cache_test.rb
|
73
73
|
- test/em_cache_test.rb
|
@@ -103,7 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
103
103
|
version: '0'
|
104
104
|
requirements: []
|
105
105
|
rubyforge_project:
|
106
|
-
rubygems_version: 2.
|
106
|
+
rubygems_version: 2.2.2
|
107
107
|
signing_key:
|
108
108
|
specification_version: 4
|
109
109
|
summary: A distribute cache client library based on redis.
|