A method of network telemetry caching and distribution comprising: receiving, from a network device, a set of network telemetry data; storing, in a first memory space of the physical memory, the received network telemetry data as a plurality of data nodes; maintaining, in a second memory space of the physical memory, a client queue having a node pointer queue and a node pointer map, wherein the node pointer map includes a plurality of node-pointer, node-count pairs, each node pointer indicating a path to a data node corresponding to the node pointer, and the node count indicating a number of updates to the data node since a previous transmission of the contents of the data node to a client device; receive, from the network device, a data node update; if the data node update corresponds to a data node having a corresponding node pointer not already present in the node pointer map: adding the corresponding node pointer to the node pointer map with a count of zero and adding the corresponding node pointer to the node pointer queue; if the data node update corresponds to a data node having a corresponding node pointer already present in the node pointer map: incrementing the node count for the corresponding node pointer in the node pointer map and not adding the corresponding node pointer to the node pointer queue; and transmitting, to the client device, a set of node-value, node-count pairs including, for each node pointer in the node pointer queue, a data value in the data node corresponding to the node pointer, and the node count in the node pointer map corresponding to the node pointer. receiving, from a network device, a set of network telemetry data; storing, in a first memory space of the physical memory, the received network telemetry data as a plurality of data nodes; maintaining, in a second memory space of the physical memory, a client queue having a node pointer queue and a node pointer map, wherein the node pointer map includes a plurality of node-pointer, node-count pairs, each node pointer indicating a path to a data node corresponding to the node pointer, and the node count indicating a number of updates to the data node since a previous transmission of the contents of the data node to a client device; receive, from the network device, a data node update; if the data node update corresponds to a data node having a corresponding node pointer not already present in the node pointer map: adding the corresponding node pointer to the node pointer map with a count of zero and adding the corresponding node pointer to the node pointer queue; if the data node update corresponds to a data node having a corresponding node pointer already present in the node pointer map: incrementing the node count for the corresponding node pointer in the node pointer map and not adding the corresponding node pointer to the node pointer queue; and transmitting, to the client device, a set of node-value, node-count pairs including, for each node pointer in the node pointer queue, a data value in the data node corresponding to the node pointer, and the node count in the node pointer map corresponding to the node pointer. adding the corresponding node pointer to the node pointer map with a count of zero and adding the corresponding node pointer to the node pointer queue; if the data node update corresponds to a data node having a corresponding node pointer already present in the node pointer map: incrementing the node count for the corresponding node pointer in the node pointer map and not adding the corresponding node pointer to the node pointer queue; and transmitting, to the client device, a set of node-value, node-count pairs including, for each node pointer in the node pointer queue, a data value in the data node corresponding to the node pointer, and the node count in the node pointer map corresponding to the node pointer.