def get_or_set(key, value = nil, expires_in: nil)
      return get(key) if set?(key)
      set(key, block_given? ? yield : value, expires_in: expires_in)
    end
def get_or_set(key, value = nil, expires_in: nil)
      return get(key) if set?(key)
      set(key, block_given? ? yield : value, expires_in: expires_in)
    end
Public: Retrieves the value for a given key if it
 has already been set; otherwise, sets the value
 either as an argument or block.

 key   - A String or Symbol representing the key.
 value - Any object that represents the value (optional).
         The value can be a MiniCache::Data.
         Not used if a block is given.
 block - A block of code that returns the value to set (optional).
         Can be set a MiniCache::Data in the block.
 expires_in - Time, in seconds, to expire the cache (optional).
              If not set, the cache never expires.

 Examples

   cache.set("name", "Derrick")
   => "Derrick"

   cache.get_or_set("name", "Joe")
   => "Derrick"

   cache.get_or_set("occupation") { "Engineer" }
   => "Engineer"

   cache.get_or_set("occupation") { "Pilot" }
   => "Engineer"

 Returns the value.