1. An eviction system for dynamically-sized caching, comprising: at least one processor; and a non-transitory processor-readable memory device storing instructions that when executed by the at least one processor causes the at least one processor to perform operations including: removing a data node from a queue of a non-blocking data structure maintaining one or more data nodes, wherein the data node corresponds to a data item a cache, and the data node comprises information relating to the data item and indicative of frequency at which the data item is accessed; determining whether the data node is a candidate for eviction based on the information included in the data node; in response to determining the data node is a candidate for eviction, inserting the data node back into the queue; and in response to determining the data node is a candidate for eviction, evicting the data node and the data item from the non-blocking data structure and the cache, respectively; wherein the one or more data nodes circulate through the non blocking data structure until a candidate for eviction is determined.