Class: Fluent::Plugin::RedisStorage
- Inherits:
-
Storage
- Object
- Storage
- Fluent::Plugin::RedisStorage
- Defined in:
- lib/fluent/plugin/storage_redis.rb
Instance Attribute Summary collapse
-
#store ⇒ Object
readonly
for test.
Instance Method Summary collapse
- #configure(conf) ⇒ Object
- #delete(key) ⇒ Object
- #fetch(key, defval) ⇒ Object
- #get(key) ⇒ Object
-
#initialize ⇒ RedisStorage
constructor
A new instance of RedisStorage.
- #load ⇒ Object
- #multi_workers_ready? ⇒ Boolean
- #put(key, value) ⇒ Object
- #save ⇒ Object
- #update(key, &block) ⇒ Object
Constructor Details
#initialize ⇒ RedisStorage
Returns a new instance of RedisStorage.
17 18 19 20 21 |
# File 'lib/fluent/plugin/storage_redis.rb', line 17 def initialize super @store = {} end |
Instance Attribute Details
#store ⇒ Object (readonly)
for test
15 16 17 |
# File 'lib/fluent/plugin/storage_redis.rb', line 15 def store @store end |
Instance Method Details
#configure(conf) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/fluent/plugin/storage_redis.rb', line 23 def configure(conf) super unless @path if conf && !conf.arg.empty? @path = conf.arg else raise Fluent::ConfigError, "path or conf.arg for <storage> is required." end end = { host: @host, port: @port, thread_safe: true, db: @db_number } [:password] = @password if @password @redis = Redis.new() end |
#delete(key) ⇒ Object
87 88 89 |
# File 'lib/fluent/plugin/storage_redis.rb', line 87 def delete(key) @store.delete(key.to_s) end |
#fetch(key, defval) ⇒ Object
79 80 81 |
# File 'lib/fluent/plugin/storage_redis.rb', line 79 def fetch(key, defval) @store.fetch(key.to_s, defval) end |
#get(key) ⇒ Object
75 76 77 |
# File 'lib/fluent/plugin/storage_redis.rb', line 75 def get(key) @store[key.to_s] end |
#load ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/fluent/plugin/storage_redis.rb', line 49 def load begin json_string = @redis.get(@path) json = Yajl::Parser.parse(json_string) unless json.is_a?(Hash) log.error "broken content for plugin storage (Hash required: ignored)", type: json.class log.debug "broken content", content: json_string return end @store = json rescue => e log.error "failed to load data for plugin storage from redis", path: @path, error: e end end |
#multi_workers_ready? ⇒ Boolean
45 46 47 |
# File 'lib/fluent/plugin/storage_redis.rb', line 45 def multi_workers_ready? true end |
#put(key, value) ⇒ Object
83 84 85 |
# File 'lib/fluent/plugin/storage_redis.rb', line 83 def put(key, value) @store[key.to_s] = value end |
#save ⇒ Object
64 65 66 67 68 69 70 71 72 73 |
# File 'lib/fluent/plugin/storage_redis.rb', line 64 def save begin json_string = Yajl::Encoder.encode(@store) @redis.pipelined { @redis.set(@path, json_string) } rescue => e log.error "failed to save data for plugin storage to redis", path: @path, error: e end end |
#update(key, &block) ⇒ Object
91 92 93 |
# File 'lib/fluent/plugin/storage_redis.rb', line 91 def update(key, &block) @store[key.to_s] = block.call(@store[key.to_s]) end |