在ruby中的特定时间后过期变量

时间:2017-02-16 20:03:39

标签: ruby redis

我有一个array = [element1, element2, element3]的课程。我同时设置了element1 = 1selement2 = 5selement3 = 7s的到期日期。 这意味着1秒后数组将更改为[element2, element3] 5s之后[element3],7s之后将是空数组。我们怎么做到这一点? 这就像我们为Redis expire key 30ttl key设置过期的方式。

1 个答案:

答案 0 :(得分:0)

在ruby中没有内置的功能,根据具体情况,您可以使用许多不同的数据结构来实现它。

这是一个简单的例子:

class Ephemarray
  def initialize
    @array = []
  end

  def [] index
    return nil if @array[index].nil?
    return @array[index] = nil if (Time.now - @array[index][2] > @array[index][1])
    return @array[index][0]
  end

  def []= index, expiry, value
    @array[index] = [value, expiry, Time.now]
  end

end

e = Ephemarray.new
e[0, 4] = 'blah'

当然,您始终可以使用gem install redis c;

解决此问题