Ruby에서 캐시 서버를 코딩 중이며 저장하는 데이터의 만료 시간을 지정해야합니다. 따라서 사용자가 데이터를 foo
키 아래에 저장하면 예를 들어 만료 시간도 초 단위로 설정됩니다. 이 순간에 데이터를 삭제해야하므로이 스케줄링에서 스레드를 생성하고 그 시간이 될 때까지 잠자기 상태로 두는 것이 좋습니다.올바른 작업 예약 방법
Thread.new(@options[:exp_time], key) do |t, k|
exp = Time.now + t
sleep(t)
if @data.key?(k) && @data[k][:exp_time] <= exp #check if it hasn't been updated
@data.delete(k)
end
end
t는 사용자가 전송 한 시간이며 키는 데이터가 저장되는 키입니다. 사용자가 키에 저장된 데이터를 대체 할 수 있도록 만료 시간을 변경할 수도 있습니다. 나는 이것이 스레드의 좋은 사용인지 또는 너무 많은 리소스를 소비하는지 또는 더 쉬운 방법이 있는지 궁금해하고있었습니다. 어떤 종류의 보석이나 도서관도 사용할 수 없습니다. 어떤 도움을 주셔서 미리 감사드립니다.
다시 한 번 감사 드리며, 잘못 보았습니다. 정확한 시간에 키를 삭제하는 유일한 방법이었습니다. 하지만 백개의 스레드가 실행되지 않는 것에 비해 몇 초가 더 걸릴 것입니다. –
이렇게하면 소수의 밀리 초보다 뒤떨어져있을 가능성은 거의 없습니다. – tadman