@antirez .I have a question.

We don't modify the dict in the function genRedisInfoString(file server.c) when we get command statistics. Why use safe iterator?

Similar situations are: 1.Function resetCommandTableStats (server.c); 2.Function sentinelForceHelloUpdateDictOfRedisInstances (sentinel.c) 3.Function clusterGetMaxEpoch (cluster.c) 4.any more..

Comment From: madolson

Safe iterators actually have less overhead than unsafe iterators since we don't maintain the finger print, so when doing a quick loop over the table it's a little bit better to just use an unsafe one.