在看redis源码时,心中要时刻有rediscontext这个结构体,你可以看到,这个context几乎到处都有,其后的注释是比较明确的:
-
- typedef struct _client {
- redisContext *context;
- sds obuf;
- char **randptr; /* Pointers to :rand: strings inside the command buf */
- size_t randlen; /* Number of pointers in client->randptr */
- size_t randfree; /* Number of unused pointers in client->randptr */
- char **stagptr; /* Pointers to slot hashtags (cluster mode only) */
- size_t staglen; /* Number of pointers in client->stagptr */
- size_t stagfree; /* Number of unused pointers in client->stagptr */
- size_t written; /* Bytes of 'obuf' already written */
- long long start; /* Start time of a request */
- long long latency; /* Request latency */
- int pending; /* Number of pending requests (replies to consume) */
- int prefix_pending; /* If non-zero, number of pending prefix commands. Commands
- such as auth and select are prefixed to the pipeline of
- benchmark commands and discarded after the first send. */
- int prefixlen; /* Size in bytes of the pending prefix commands */
- int thread_id;
- struct clusterNode *cluster_node;
- int slots_last_update;
- } *client;
看多了,就自然眼熟了,也不要求死记硬背。