Cache count of keys in database
Former-commit-id: 7cd266030ad82b5fddd4668d666adc95e1bed475
This commit is contained in:
parent
0249ff44a5
commit
9ae07e994d
@ -1646,6 +1646,62 @@ int clientsCronResizeQueryBuffer(client *c) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SymVer parseVersion(const char *version)
|
||||||
|
{
|
||||||
|
SymVer ver = {-1,-1,-1};
|
||||||
|
long versions[3] = {-1,-1,-1};
|
||||||
|
const char *start = version;
|
||||||
|
const char *end = nullptr;
|
||||||
|
|
||||||
|
for (int iver = 0; iver < 3; ++iver)
|
||||||
|
{
|
||||||
|
end = start;
|
||||||
|
while (*end != '\0' && *end != '.')
|
||||||
|
++end;
|
||||||
|
|
||||||
|
if (start >= end)
|
||||||
|
return ver;
|
||||||
|
|
||||||
|
if (!string2l(start, end - start, versions + iver))
|
||||||
|
return ver;
|
||||||
|
if (*end != '\0')
|
||||||
|
start = end+1;
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
ver.major = versions[0];
|
||||||
|
ver.minor = versions[1];
|
||||||
|
ver.build = versions[2];
|
||||||
|
|
||||||
|
return ver;
|
||||||
|
}
|
||||||
|
|
||||||
|
VersionCompareResult compareVersion(SymVer *pver)
|
||||||
|
{
|
||||||
|
SymVer symVerThis = parseVersion(KEYDB_REAL_VERSION);
|
||||||
|
for (int iver = 0; iver < 3; ++iver)
|
||||||
|
{
|
||||||
|
long verThis, verOther;
|
||||||
|
switch (iver)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
verThis = symVerThis.major; verOther = pver->major;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
verThis = symVerThis.minor; verOther = pver->minor;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
verThis = symVerThis.build; verOther = pver->build;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (verThis < verOther)
|
||||||
|
return VersionCompareResult::NewerVersion;
|
||||||
|
if (verThis > verOther)
|
||||||
|
return VersionCompareResult::OlderVersion;
|
||||||
|
}
|
||||||
|
return VersionCompareResult::EqualVerison;
|
||||||
|
}
|
||||||
|
|
||||||
/* This function is used in order to track clients using the biggest amount
|
/* This function is used in order to track clients using the biggest amount
|
||||||
* of memory in the latest few seconds. This way we can provide such information
|
* of memory in the latest few seconds. This way we can provide such information
|
||||||
* in the INFO output (clients section), without having to do an O(N) scan for
|
* in the INFO output (clients section), without having to do an O(N) scan for
|
||||||
@ -5397,6 +5453,13 @@ int main(int argc, char **argv) {
|
|||||||
|
|
||||||
std::set_terminate(OnTerminate);
|
std::set_terminate(OnTerminate);
|
||||||
|
|
||||||
|
{
|
||||||
|
SymVer version;
|
||||||
|
version = parseVersion(KEYDB_REAL_VERSION);
|
||||||
|
serverAssert(version.major >= 0 && version.minor >= 0 && version.build >= 0);
|
||||||
|
serverAssert(compareVersion(&version) == VersionCompareResult::EqualVerison);
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef USE_MEMKIND
|
#ifdef USE_MEMKIND
|
||||||
storage_init(NULL, 0);
|
storage_init(NULL, 0);
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,3 +1,28 @@
|
|||||||
#define KEYDB_REAL_VERSION "0.0.0"
|
#define KEYDB_REAL_VERSION "0.0.0"
|
||||||
extern const char *KEYDB_SET_VERSION; // Unlike real version, this can be overriden by the config
|
extern const char *KEYDB_SET_VERSION; // Unlike real version, this can be overriden by the config
|
||||||
|
|
||||||
|
enum VersionCompareResult
|
||||||
|
{
|
||||||
|
EqualVerison,
|
||||||
|
OlderVersion,
|
||||||
|
NewerVersion,
|
||||||
|
};
|
||||||
|
|
||||||
|
struct SymVer
|
||||||
|
{
|
||||||
|
long major;
|
||||||
|
long minor;
|
||||||
|
long build;
|
||||||
|
};
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C"
|
||||||
|
{
|
||||||
|
#endif
|
||||||
|
|
||||||
|
struct SymVer parseVersion(const char *version);
|
||||||
|
enum VersionCompareResult compareVersion(struct SymVer *pver);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
Loading…
x
Reference in New Issue
Block a user