diff --git a/src/server.h b/src/server.h index cff87e10f..dbb1b9621 100644 --- a/src/server.h +++ b/src/server.h @@ -2071,7 +2071,8 @@ struct redisServer { char *locale_collate; }; -#define MAX_KEYS_BUFFER 256 +/* we use 6 so that all getKeyResult fits a cacheline */ +#define MAX_KEYS_BUFFER 6 typedef struct { int pos; /* The position of the key within the client array */ @@ -2084,12 +2085,12 @@ typedef struct { * for returning channel information. */ typedef struct { + int numkeys; /* Number of key indices return */ + int size; /* Available array size */ keyReference keysbuf[MAX_KEYS_BUFFER]; /* Pre-allocated buffer, to save heap allocations */ keyReference *keys; /* Key indices array, points to keysbuf or heap */ - int numkeys; /* Number of key indices return */ - int size; /* Available array size */ } getKeysResult; -#define GETKEYS_RESULT_INIT { {{0}}, NULL, 0, MAX_KEYS_BUFFER } +#define GETKEYS_RESULT_INIT { 0, MAX_KEYS_BUFFER, {{0}}, NULL } /* Key specs definitions. *