cache_store_redis 1.0.0 → 2.1.1

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
- SHA1:
3
- metadata.gz: be38ccc0055190deb7d7285fa68c0a82c8d5598e
4
- data.tar.gz: 43d959f9ac031653d52f717186bd3b7abddec1a5
2
+ SHA256:
3
+ metadata.gz: edb347a21c9194be5a503cd49269450999464c8b6b9e0d76301db09378070877
4
+ data.tar.gz: 91c4895a3b68615a107401357bb851a2228b7f3fcbe0cf539764bc53e10aff43
5
5
  SHA512:
6
- metadata.gz: 1f90ae3a590d10b6034df72719966252ef1caf6b0b14a1564b5fb53a22cb54c24c989f583d04a069cb3910973425cfbcf30b9d9d37f2b30a2175630485bbb87a
7
- data.tar.gz: 78a73c402e500a51c9d3aceb080de57e7daf40ef80fce5b9b6cf3166b87531ec72c58dd95c5c37fda4162164f311bd4cee3e5a239a28910daf0ce2377a62c362
6
+ metadata.gz: 3baf73be272515d4a80e2e05dc3adec633187c5066571d7e00efb9087814d442afed6257d213cf67dba855f5f3c3501ab369232c07a3fdabd8397684f4575817
7
+ data.tar.gz: 3c8363c6745d33f3f782c3ee87cb0d2a54b7bd6c63e5bfc26ebabf92ba91a13e0128d3878fdc724cc53a79cc44ca174723d71591deaf856401b181abe7a2d392
@@ -4,6 +4,8 @@ require 'thread'
4
4
  require 'cache_store_redis/version'
5
5
  require 'redis'
6
6
  require 'securerandom'
7
+ require 'oj'
8
+ require 'logger'
7
9
 
8
10
  require_relative 'cache_store_redis/redis_connection'
9
11
  require_relative 'cache_store_redis/redis_connection_pool'
@@ -1,5 +1,3 @@
1
- require 'logger'
2
-
3
1
  # This class is used to define a redis cache store that logs failures as warnings but does not raise errors for
4
2
  # cache connections
5
3
  class OptionalRedisCacheStore
@@ -7,7 +5,7 @@ class OptionalRedisCacheStore
7
5
  @cache_store = RedisCacheStore.new(namespace, config)
8
6
  @logger = logger || Logger.new(STDOUT)
9
7
  end
10
-
8
+
11
9
  def redis_store
12
10
  @cache_store
13
11
  end
@@ -39,10 +37,7 @@ class OptionalRedisCacheStore
39
37
  def optional_get(key, expires_in = 0)
40
38
  redis_store.get(key, expires_in)
41
39
  rescue => e
42
- @logger.error(
43
- "[#{self.class}] - An error occurred requesting data from the cache. " \
44
- "Key: #{key} | Error: #{e.message} | Backtrace: #{e.backtrace}"
45
- )
40
+ handle_error(e, 'requesting data from the cache')
46
41
  nil
47
42
  end
48
43
 
@@ -60,38 +55,42 @@ class OptionalRedisCacheStore
60
55
  def set(key, value, expires_in = 0)
61
56
  redis_store.set(key, value, expires_in)
62
57
  rescue => e
63
- @logger.error(
64
- "[#{self.class}] - An error occurred storing data in the cache. " \
65
- "Key: #{key} | Error: #{e.message} | Backtrace: #{e.backtrace}"
66
- )
58
+ handle_error(e, 'storing data in the cache')
67
59
  end
68
60
 
69
61
  def remove(key)
70
62
  redis_store.remove(key)
71
63
  rescue => e
72
- @logger.error(
73
- "[#{self.class}] - An error occurred removing data from the cache. " \
74
- "Key: #{key} | Error: #{e.message} | Backtrace: #{e.backtrace}"
75
- )
64
+ handle_error(e, 'removing data from the cache')
76
65
  end
77
66
 
78
67
  def exist?(key)
79
68
  redis_store.exist?(key)
80
69
  rescue => e
81
- @logger.error(
82
- "[#{self.class}] - An error occurred checking if a key exists in the cache. " \
83
- "Key: #{key} | Error: #{e.message} | Backtrace: #{e.backtrace}"
84
- )
70
+ handle_error(e, 'checking if a key exists in the cache')
85
71
  false
86
72
  end
87
73
 
88
74
  def ping
89
75
  redis_store.ping
90
76
  rescue => e
91
- @logger.error(
92
- "[#{self.class}] - An error occurred checking pinging the cache. " \
93
- "Error: #{e.message} | Backtrace: #{e.backtrace}"
94
- )
77
+ handle_error(e, 'pinging the cache')
95
78
  false
96
79
  end
80
+
81
+ def shutdown
82
+ redis_store.shutdown
83
+ rescue => e
84
+ handle_error(e, 'shutting down the connection pool')
85
+ false
86
+ end
87
+
88
+ private
89
+
90
+ def handle_error(ex, msg)
91
+ @logger.error do
92
+ "[#{self.class}] - An error occurred #{msg}. " \
93
+ "Error: #{ex.message} | Backtrace: #{ex.backtrace}"
94
+ end
95
+ end
97
96
  end
@@ -1,11 +1,10 @@
1
1
  # This class is used to implement a redis cache store.
2
2
  class RedisCacheStore
3
- def initialize(namespace = nil, config = nil)
4
- @connection_pool = RedisConnectionPool.new(config)
3
+ # Default expiry time if not provided. (1 hour)
4
+ DEFAULT_TTL = 3_600
5
5
 
6
- unless RUBY_PLATFORM == 'java'
7
- require 'oj'
8
- end
6
+ def initialize(namespace = nil, config = nil)
7
+ @connection_pool = RedisConnectionPool.new(namespace, config)
9
8
 
10
9
  @namespace = namespace
11
10
  @config = config
@@ -63,7 +62,7 @@ class RedisCacheStore
63
62
  # @param key [String] This is the unique key to reference the value being set within this cache store.
64
63
  # @param value [Object] This is the value to set within this cache store.
65
64
  # @param expires_in [Integer] This is the number of seconds from the current time that this value should expire.
66
- def set(key, value, expires_in = 3_600)
65
+ def set(key, value, expires_in = DEFAULT_TTL)
67
66
  k = build_key(key)
68
67
 
69
68
  v = if value.nil? || (value.is_a?(String) && value.strip.empty?)
@@ -72,11 +71,14 @@ class RedisCacheStore
72
71
  serialize(value)
73
72
  end
74
73
 
74
+ expiry_int = Integer(expires_in)
75
+ expire_value = expiry_int.positive? ? expiry_int : DEFAULT_TTL
76
+
75
77
  with_client do |client|
76
78
  client.multi do
77
79
  client.set(k, v)
78
80
 
79
- client.expire(k, expires_in) if expires_in.positive?
81
+ client.expire(k, expire_value)
80
82
  end
81
83
  end
82
84
  end
@@ -141,19 +143,11 @@ class RedisCacheStore
141
143
  private
142
144
 
143
145
  def serialize(object)
144
- if RUBY_PLATFORM == 'java'
145
- Marshal::dump(object)
146
- else
147
- Oj.dump(object)
148
- end
146
+ Oj.dump(object)
149
147
  end
150
148
 
151
149
  def deserialize(object)
152
- if RUBY_PLATFORM == 'java'
153
- Marshal::load(object)
154
- else
155
- Oj.load(object)
156
- end
150
+ Oj.load(object)
157
151
  end
158
152
 
159
153
  def build_key(key)
@@ -1,3 +1,3 @@
1
1
  module CacheStoreRedis
2
- VERSION = '1.0.0'
2
+ VERSION = '2.1.1'
3
3
  end
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cache_store_redis
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 2.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - vaughanbrittonsage
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-03-06 00:00:00.000000000 Z
11
+ date: 2021-08-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.11'
19
+ version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '1.11'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -42,16 +42,44 @@ dependencies:
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '3.0'
47
+ version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: simplecov
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
53
67
  - !ruby/object:Gem::Version
54
- version: '3.0'
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: timecop
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
55
83
  - !ruby/object:Gem::Dependency
56
84
  name: redis
57
85
  requirement: !ruby/object:Gem::Requirement
@@ -95,7 +123,7 @@ files:
95
123
  - lib/cache_store_redis/redis_connection.rb
96
124
  - lib/cache_store_redis/redis_connection_pool.rb
97
125
  - lib/cache_store_redis/version.rb
98
- homepage: https://github.com/vaughanbrittonsage/cache_store
126
+ homepage: https://github.com/sage/cache_store
99
127
  licenses:
100
128
  - MIT
101
129
  metadata: {}
@@ -114,8 +142,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
114
142
  - !ruby/object:Gem::Version
115
143
  version: '0'
116
144
  requirements: []
117
- rubyforge_project:
118
- rubygems_version: 2.5.1
145
+ rubygems_version: 3.1.2
119
146
  signing_key:
120
147
  specification_version: 4
121
148
  summary: This is the redis cache_store implementation.