[erlang-questions] Guidance to a cache mechanism
Jesper Louis Andersen
jesper.louis.andersen@REDACTED
Wed Oct 31 13:03:23 CET 2012
On Oct 31, 2012, at 6:55 AM, Maruthavanan Subbarayan <maruthavanan_s@REDACTED> wrote:
> Hi Richard,
>
> I thought of keeping the time stamp as the key in the ets table and maintain that in state when a timeout event occurs. I hope this would help me to delete the entries in ets table with less burden.
Well, ETS tables have two possible configurations that may be of interest to you: by default they are hash-tables, but you can map them as ordered sets. So if you store them as {Key, Payload} you are able to use ets:first/1 to grab the next guy in the queue. And you can quickly walk the table and time out entries. See for instance ets:select_delete/2. You may want, however, to discuss if you want a FIFO or a LIFO order here. FIFO often have the problem that if the queue size goes up, then everybody waits. LIFO stacks have the advantage that long waiters will wait longer.
Jesper Louis Andersen
Erlang Solutions Ltd., Copenhagen
More information about the erlang-questions
mailing list