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

在ruby中,变量在特定时间后过期,ruby,redis,Ruby,Redis,我有一个带有array=[element1,element2,element3]的类。我同时为element1=1s,element2=5s,element3=7s设置了过期时间。 这意味着1s后,数组将更改为[element2,element3] 5s后[element3],7s后将为空数组。我们如何做到这一点? 它就像我们为Redis设置expire的方式一样,expire键30,ttl键,ruby中没有内置的功能,根据具体情况,您可以使用许多不同的数据结构来实现它 这里有一个简单的例子:

我有一个带有
array=[element1,element2,element3]
的类。我同时为
element1=1s
element2=5s
element3=7s
设置了过期时间。 这意味着1s后,数组将更改为
[element2,element3]
5s后
[element3]
,7s后将为空数组。我们如何做到这一点?
它就像我们为Redis设置expire的方式一样,
expire键30
ttl键
,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安装redis
c解决这个问题

是的,我们有。它包括编写代码以检查过期时间,然后将
nil
分配给它们。我从来没有看到一个理由去做你在代码中所说的事情。相反,如果时间已经过了,我会拒绝做一些需要使用这些变量的事情。我刚刚编辑了这个问题以了解更多细节。