cache_store_redis 0.3.2-java → 0.4.0-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
  SHA256:
3
- metadata.gz: e5dc8f3e6e5dc5e83e0d51540a15da7140298d9915de546f35759affb3b41ee6
4
- data.tar.gz: d895e01a2007f6d0295b6d8861afc9ed034ecfa8d63dd339f258b79c428a73fb
3
+ metadata.gz: 945597672738a705803080b32c7b903c69f59210561b17c46fc48c83bcb3c5d8
4
+ data.tar.gz: 3a0106ddaab3002adf3776f2892dc2b9bb3e5f6fe8a6252fd1c372d3c623f660
5
5
  SHA512:
6
- metadata.gz: 53e674a747a0bb31ece3788a26b03d6ca72ca0a0f6128928c7c926feecc5c67a6f5b377fb15e23f2b15f6050d2c41d179625fc6fced29d18708b83281eb242a4
7
- data.tar.gz: 8e3d48bc9ae19ca9f51f7f875d5f349584898890ddffdb5ce4d91783043aaa4b3f270ad1d2ec00bfd3928a8d205f00347d0105556bdd0b4a872660031ef14f97
6
+ metadata.gz: 3897ae95d23e4311c30a81846c2bdf4bfb0d0c9ff92ccdf8592dd6e21ffb839d7d017c6d9df2b83a42335435300c65cde8e7f0c45bc70eb1200d8903e5fd2cd6
7
+ data.tar.gz: 9efeceb991fa83b8bb3c735838a14bc3ba913e4bb66bd5faf8b0c4d77b543d5177db68cae1d8bf9732ec0e8ee6ebcb98f46fa7a395f1e9181c525be31b0f4584
@@ -1,3 +1,3 @@
1
1
  module CacheStoreRedis
2
- VERSION = '0.3.2'
2
+ VERSION = '0.4.0'
3
3
  end
@@ -1,11 +1,30 @@
1
1
  require 'cache_store_redis/version'
2
2
  require 'redis'
3
3
  require 'securerandom'
4
+ require 'connection_pool'
4
5
 
5
6
  #This class is used to implement a redis cache store.
6
7
  #This class is used for interacting with a redis based cache store.
7
8
  class RedisCacheStore
8
9
 
10
+ def self.pool(config)
11
+ @pool ||= ConnectionPool.new(size: pool_size, timeout: pool_timeout) do
12
+ if config == nil
13
+ Redis.new
14
+ else
15
+ Redis.new(config)
16
+ end
17
+ end
18
+ end
19
+
20
+ def self.pool_size
21
+ @pool_size ||= ENV['CACHE_STORE_POOL_SIZE'] || 10
22
+ end
23
+
24
+ def self.pool_timeout
25
+ @pool_size ||= ENV['CACHE_STORE_POOL_TIMEOUT'] || 1
26
+ end
27
+
9
28
  def initialize(namespace = nil, config = nil)
10
29
 
11
30
  if RUBY_PLATFORM != 'java'
@@ -13,10 +32,12 @@ class RedisCacheStore
13
32
  end
14
33
 
15
34
  @namespace = namespace
16
- if config == nil
17
- @client = Redis.new
18
- else
19
- @client = Redis.new(config)
35
+ @config = config
36
+ end
37
+
38
+ def with_client
39
+ self.class.pool(@config).with do |client|
40
+ yield client
20
41
  end
21
42
  end
22
43
 
@@ -34,8 +55,6 @@ class RedisCacheStore
34
55
  if driver != nil
35
56
  config[:driver] = driver
36
57
  end
37
-
38
- @client = Redis.new(config)
39
58
  end
40
59
 
41
60
  #This method is called to set a value within this cache store by it's key.
@@ -51,10 +70,14 @@ class RedisCacheStore
51
70
  v = serialize(value)
52
71
  end
53
72
 
54
- @client.set(k, v)
73
+ with_client do |client|
74
+ client.multi do
75
+ client.set(k, v)
55
76
 
56
- if expires_in > 0
57
- @client.expire(k, expires_in)
77
+ if expires_in > 0
78
+ client.expire(k, expires_in)
79
+ end
80
+ end
58
81
  end
59
82
 
60
83
  end
@@ -69,7 +92,10 @@ class RedisCacheStore
69
92
 
70
93
  k = build_key(key)
71
94
 
72
- value = @client.get(k)
95
+ value = with_client do |client|
96
+ client.get(k)
97
+ end
98
+
73
99
  value = deserialize(value) unless value == nil
74
100
 
75
101
  if value.nil? && block_given?
@@ -84,9 +110,9 @@ class RedisCacheStore
84
110
  #
85
111
  # @param key [String] This is the unique key to reference the value to remove from this cache store.
86
112
  def remove(key)
87
-
88
- @client.del(build_key(key))
89
-
113
+ with_client do |client|
114
+ client.del(build_key(key))
115
+ end
90
116
  end
91
117
 
92
118
  # This method is called to check if a value exists within this cache store for a specific key.
@@ -94,16 +120,18 @@ class RedisCacheStore
94
120
  # @param key [String] This is the unique key to reference the value to check for within this cache store.
95
121
  # @return [Boolean] True or False to specify if the key exists in the cache store.
96
122
  def exist?(key)
97
-
98
- @client.exists(build_key(key))
99
-
123
+ with_client do |client|
124
+ client.exists(build_key(key))
125
+ end
100
126
  end
101
127
 
102
128
  # Ping the cache store.
103
129
  #
104
130
  # @return [String] `PONG`
105
131
  def ping
106
- @client.ping
132
+ with_client do |client|
133
+ client.ping
134
+ end
107
135
  end
108
136
 
109
137
  private
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cache_store_redis
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.4.0
5
5
  platform: java
6
6
  authors:
7
7
  - vaughanbrittonsage
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-06-26 00:00:00.000000000 Z
11
+ date: 2017-07-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ name: connection_pool
76
+ prerelease: false
77
+ type: :runtime
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  description: This is the redis cache_store implementation.
70
84
  email:
71
85
  - vaughan.britton@sage.com