Skip to content

Commit

Permalink
add hash cache cmd (OpenAtomFoundation#251)
Browse files Browse the repository at this point in the history
add_hash_cache_cmd

Co-authored-by: wuxianrong <[email protected]>
  • Loading branch information
Mixficsol and wuxianrong authored Nov 6, 2023
1 parent 4fbb251 commit b658ec9
Show file tree
Hide file tree
Showing 3 changed files with 410 additions and 69 deletions.
52 changes: 52 additions & 0 deletions include/pika_hash.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,18 @@ class HDelCmd : public Cmd {
return res;
}
void Do(std::shared_ptr<Slot> slot = nullptr) override;
void DoFromCache(std::shared_ptr<Slot> slot = nullptr) override;
void DoUpdateCache(std::shared_ptr<Slot> slot = nullptr) override;
void Split(std::shared_ptr<Slot> slot, const HintKeys& hint_keys) override {};
void Merge() override {};
Cmd* Clone() override { return new HDelCmd(*this); }

private:
std::string key_;
std::vector<std::string> fields_;
int32_t deleted_ = 0;
void DoInitial() override;
rocksdb::Status s_;
};

class HGetCmd : public Cmd {
Expand All @@ -42,13 +46,17 @@ class HGetCmd : public Cmd {
return res;
}
void Do(std::shared_ptr<Slot> slot = nullptr) override;
void PreDo(std::shared_ptr<Slot> slot = nullptr) override;
void DoFromCache(std::shared_ptr<Slot> slot = nullptr) override;
void DoUpdateCache(std::shared_ptr<Slot> slot = nullptr) override;
void Split(std::shared_ptr<Slot> slot, const HintKeys& hint_keys) override {};
void Merge() override {};
Cmd* Clone() override { return new HGetCmd(*this); }

private:
std::string key_, field_;
void DoInitial() override;
rocksdb::Status s_;
};

class HGetallCmd : public Cmd {
Expand All @@ -60,13 +68,17 @@ class HGetallCmd : public Cmd {
return res;
}
void Do(std::shared_ptr<Slot> slot = nullptr) override;
void PreDo(std::shared_ptr<Slot> slot = nullptr) override;
void DoFromCache(std::shared_ptr<Slot> slot = nullptr) override;
void DoUpdateCache(std::shared_ptr<Slot> slot = nullptr) override;
void Split(std::shared_ptr<Slot> slot, const HintKeys& hint_keys) override {};
void Merge() override {};
Cmd* Clone() override { return new HGetallCmd(*this); }

private:
std::string key_;
void DoInitial() override;
rocksdb::Status s_;
};

class HSetCmd : public Cmd {
Expand All @@ -78,13 +90,16 @@ class HSetCmd : public Cmd {
return res;
}
void Do(std::shared_ptr<Slot> slot = nullptr) override;
void DoFromCache(std::shared_ptr<Slot> slot = nullptr) override;
void DoUpdateCache(std::shared_ptr<Slot> slot = nullptr) override;
void Split(std::shared_ptr<Slot> slot, const HintKeys& hint_keys) override {};
void Merge() override {};
Cmd* Clone() override { return new HSetCmd(*this); }

private:
std::string key_, field_, value_;
void DoInitial() override;
rocksdb::Status s_;
};

class HExistsCmd : public Cmd {
Expand All @@ -96,13 +111,17 @@ class HExistsCmd : public Cmd {
return res;
}
void Do(std::shared_ptr<Slot> slot = nullptr) override;
void PreDo(std::shared_ptr<Slot> slot = nullptr) override;
void DoFromCache(std::shared_ptr<Slot> slot = nullptr) override;
void DoUpdateCache(std::shared_ptr<Slot> slot = nullptr) override;
void Split(std::shared_ptr<Slot> slot, const HintKeys& hint_keys) override {};
void Merge() override {};
Cmd* Clone() override { return new HExistsCmd(*this); }

private:
std::string key_, field_;
void DoInitial() override;
rocksdb::Status s_;
};

class HIncrbyCmd : public Cmd {
Expand All @@ -114,6 +133,8 @@ class HIncrbyCmd : public Cmd {
return res;
}
void Do(std::shared_ptr<Slot> slot = nullptr) override;
void DoFromCache(std::shared_ptr<Slot> slot = nullptr) override;
void DoUpdateCache(std::shared_ptr<Slot> slot = nullptr) override;
void Split(std::shared_ptr<Slot> slot, const HintKeys& hint_keys) override {};
void Merge() override {};
Cmd* Clone() override { return new HIncrbyCmd(*this); }
Expand All @@ -122,6 +143,7 @@ class HIncrbyCmd : public Cmd {
std::string key_, field_;
int64_t by_ = 0;
void DoInitial() override;
rocksdb::Status s_;
};

class HIncrbyfloatCmd : public Cmd {
Expand All @@ -133,13 +155,16 @@ class HIncrbyfloatCmd : public Cmd {
return res;
}
void Do(std::shared_ptr<Slot> slot = nullptr) override;
void DoFromCache(std::shared_ptr<Slot> slot = nullptr) override;
void DoUpdateCache(std::shared_ptr<Slot> slot = nullptr) override;
void Split(std::shared_ptr<Slot> slot, const HintKeys& hint_keys) override {};
void Merge() override {};
Cmd* Clone() override { return new HIncrbyfloatCmd(*this); }

private:
std::string key_, field_, by_;
void DoInitial() override;
rocksdb::Status s_;
};

class HKeysCmd : public Cmd {
Expand All @@ -151,13 +176,17 @@ class HKeysCmd : public Cmd {
return res;
}
void Do(std::shared_ptr<Slot> slot = nullptr) override;
void PreDo(std::shared_ptr<Slot> slot = nullptr) override;
void DoFromCache(std::shared_ptr<Slot> slot = nullptr) override;
void DoUpdateCache(std::shared_ptr<Slot> slot = nullptr) override;
void Split(std::shared_ptr<Slot> slot, const HintKeys& hint_keys) override {};
void Merge() override {};
Cmd* Clone() override { return new HKeysCmd(*this); }

private:
std::string key_;
void DoInitial() override;
rocksdb::Status s_;
};

class HLenCmd : public Cmd {
Expand All @@ -169,13 +198,17 @@ class HLenCmd : public Cmd {
return res;
}
void Do(std::shared_ptr<Slot> slot = nullptr) override;
void PreDo(std::shared_ptr<Slot> slot = nullptr) override;
void DoFromCache(std::shared_ptr<Slot> slot = nullptr) override;
void DoUpdateCache(std::shared_ptr<Slot> slot = nullptr) override;
void Split(std::shared_ptr<Slot> slot, const HintKeys& hint_keys) override {};
void Merge() override {};
Cmd* Clone() override { return new HLenCmd(*this); }

private:
std::string key_;
void DoInitial() override;
rocksdb::Status s_;
};

class HMgetCmd : public Cmd {
Expand All @@ -187,6 +220,9 @@ class HMgetCmd : public Cmd {
return res;
}
void Do(std::shared_ptr<Slot> slot = nullptr) override;
void PreDo(std::shared_ptr<Slot> slot = nullptr) override;
void DoFromCache(std::shared_ptr<Slot> slot = nullptr) override;
void DoUpdateCache(std::shared_ptr<Slot> slot = nullptr) override;
void Split(std::shared_ptr<Slot> slot, const HintKeys& hint_keys) override {};
void Merge() override {};
Cmd* Clone() override { return new HMgetCmd(*this); }
Expand All @@ -195,6 +231,7 @@ class HMgetCmd : public Cmd {
std::string key_;
std::vector<std::string> fields_;
void DoInitial() override;
rocksdb::Status s_;
};

class HMsetCmd : public Cmd {
Expand All @@ -206,6 +243,8 @@ class HMsetCmd : public Cmd {
return res;
}
void Do(std::shared_ptr<Slot> slot = nullptr) override;
void DoFromCache(std::shared_ptr<Slot> slot = nullptr) override;
void DoUpdateCache(std::shared_ptr<Slot> slot = nullptr) override;
void Split(std::shared_ptr<Slot> slot, const HintKeys& hint_keys) override {};
void Merge() override {};
Cmd* Clone() override { return new HMsetCmd(*this); }
Expand All @@ -214,6 +253,7 @@ class HMsetCmd : public Cmd {
std::string key_;
std::vector<storage::FieldValue> fvs_;
void DoInitial() override;
rocksdb::Status s_;
};

class HSetnxCmd : public Cmd {
Expand All @@ -225,13 +265,16 @@ class HSetnxCmd : public Cmd {
return res;
}
void Do(std::shared_ptr<Slot> slot = nullptr) override;
void DoFromCache(std::shared_ptr<Slot> slot = nullptr) override;
void DoUpdateCache(std::shared_ptr<Slot> slot = nullptr) override;
void Split(std::shared_ptr<Slot> slot, const HintKeys& hint_keys) override {};
void Merge() override {};
Cmd* Clone() override { return new HSetnxCmd(*this); }

private:
std::string key_, field_, value_;
void DoInitial() override;
rocksdb::Status s_;
};

class HStrlenCmd : public Cmd {
Expand All @@ -243,13 +286,17 @@ class HStrlenCmd : public Cmd {
return res;
}
void Do(std::shared_ptr<Slot> slot = nullptr) override;
void PreDo(std::shared_ptr<Slot> slot = nullptr) override;
void DoFromCache(std::shared_ptr<Slot> slot = nullptr) override;
void DoUpdateCache(std::shared_ptr<Slot> slot = nullptr) override;
void Split(std::shared_ptr<Slot> slot, const HintKeys& hint_keys) override {};
void Merge() override {};
Cmd* Clone() override { return new HStrlenCmd(*this); }

private:
std::string key_, field_;
void DoInitial() override;
rocksdb::Status s_;
};

class HValsCmd : public Cmd {
Expand All @@ -261,13 +308,17 @@ class HValsCmd : public Cmd {
return res;
}
void Do(std::shared_ptr<Slot> slot = nullptr) override;
void PreDo(std::shared_ptr<Slot> slot = nullptr) override;
void DoFromCache(std::shared_ptr<Slot> slot = nullptr) override;
void DoUpdateCache(std::shared_ptr<Slot> slot = nullptr) override;
void Split(std::shared_ptr<Slot> slot, const HintKeys& hint_keys) override {};
void Merge() override {};
Cmd* Clone() override { return new HValsCmd(*this); }

private:
std::string key_, field_;
void DoInitial() override;
rocksdb::Status s_;
};

class HScanCmd : public Cmd {
Expand Down Expand Up @@ -372,5 +423,6 @@ class PKHRScanRangeCmd : public Cmd {
pattern_ = "*";
limit_ = 10;
}
rocksdb::Status s_;
};
#endif
28 changes: 14 additions & 14 deletions src/pika_command.cc
Original file line number Diff line number Diff line change
Expand Up @@ -319,59 +319,59 @@ void InitCmdTable(CmdTable* cmd_table) {
// Hash
////HDelCmd
std::unique_ptr<Cmd> hdelptr =
std::make_unique<HDelCmd>(kCmdNameHDel, -3, kCmdFlagsWrite | kCmdFlagsSingleSlot | kCmdFlagsHash);
std::make_unique<HDelCmd>(kCmdNameHDel, -3, kCmdFlagsWrite | kCmdFlagsSingleSlot | kCmdFlagsHash | kCmdFlagsUpdateCache | kCmdFlagsDoFromCache);
cmd_table->insert(std::pair<std::string, std::unique_ptr<Cmd>>(kCmdNameHDel, std::move(hdelptr)));
////HSetCmd
std::unique_ptr<Cmd> hsetptr =
std::make_unique<HSetCmd>(kCmdNameHSet, 4, kCmdFlagsWrite | kCmdFlagsSingleSlot | kCmdFlagsHash);
std::make_unique<HSetCmd>(kCmdNameHSet, 4, kCmdFlagsWrite | kCmdFlagsSingleSlot | kCmdFlagsHash | kCmdFlagsUpdateCache | kCmdFlagsDoFromCache);
cmd_table->insert(std::pair<std::string, std::unique_ptr<Cmd>>(kCmdNameHSet, std::move(hsetptr)));
////HGetCmd
std::unique_ptr<Cmd> hgetptr =
std::make_unique<HGetCmd>(kCmdNameHGet, 3, kCmdFlagsRead | kCmdFlagsSingleSlot | kCmdFlagsHash);
std::make_unique<HGetCmd>(kCmdNameHGet, 3, kCmdFlagsRead | kCmdFlagsSingleSlot | kCmdFlagsHash | kCmdFlagsUpdateCache | kCmdFlagsDoFromCache | kCmdFlagsPreDo);
cmd_table->insert(std::pair<std::string, std::unique_ptr<Cmd>>(kCmdNameHGet, std::move(hgetptr)));
////HGetallCmd
std::unique_ptr<Cmd> hgetallptr =
std::make_unique<HGetallCmd>(kCmdNameHGetall, 2, kCmdFlagsRead | kCmdFlagsSingleSlot | kCmdFlagsHash);
std::make_unique<HGetallCmd>(kCmdNameHGetall, 2, kCmdFlagsRead | kCmdFlagsSingleSlot | kCmdFlagsHash | kCmdFlagsUpdateCache | kCmdFlagsDoFromCache | kCmdFlagsPreDo);
cmd_table->insert(std::pair<std::string, std::unique_ptr<Cmd>>(kCmdNameHGetall, std::move(hgetallptr)));
////HExistsCmd
std::unique_ptr<Cmd> hexistsptr =
std::make_unique<HExistsCmd>(kCmdNameHExists, 3, kCmdFlagsRead | kCmdFlagsSingleSlot | kCmdFlagsHash);
std::make_unique<HExistsCmd>(kCmdNameHExists, 3, kCmdFlagsRead | kCmdFlagsSingleSlot | kCmdFlagsHash | kCmdFlagsUpdateCache | kCmdFlagsDoFromCache | kCmdFlagsPreDo);
cmd_table->insert(std::pair<std::string, std::unique_ptr<Cmd>>(kCmdNameHExists, std::move(hexistsptr)));
////HIncrbyCmd
std::unique_ptr<Cmd> hincrbyptr =
std::make_unique<HIncrbyCmd>(kCmdNameHIncrby, 4, kCmdFlagsWrite | kCmdFlagsSingleSlot | kCmdFlagsHash);
std::make_unique<HIncrbyCmd>(kCmdNameHIncrby, 4, kCmdFlagsWrite | kCmdFlagsSingleSlot | kCmdFlagsHash | kCmdFlagsUpdateCache | kCmdFlagsDoFromCache);
cmd_table->insert(std::pair<std::string, std::unique_ptr<Cmd>>(kCmdNameHIncrby, std::move(hincrbyptr)));
////HIncrbyfloatCmd
std::unique_ptr<Cmd> hincrbyfloatptr =
std::make_unique<HIncrbyfloatCmd>(kCmdNameHIncrbyfloat, 4, kCmdFlagsWrite | kCmdFlagsSingleSlot | kCmdFlagsHash);
std::make_unique<HIncrbyfloatCmd>(kCmdNameHIncrbyfloat, 4, kCmdFlagsWrite | kCmdFlagsSingleSlot | kCmdFlagsHash | kCmdFlagsUpdateCache | kCmdFlagsDoFromCache);
cmd_table->insert(std::pair<std::string, std::unique_ptr<Cmd>>(kCmdNameHIncrbyfloat, std::move(hincrbyfloatptr)));
////HKeysCmd
std::unique_ptr<Cmd> hkeysptr =
std::make_unique<HKeysCmd>(kCmdNameHKeys, 2, kCmdFlagsRead | kCmdFlagsSingleSlot | kCmdFlagsHash);
std::make_unique<HKeysCmd>(kCmdNameHKeys, 2, kCmdFlagsRead | kCmdFlagsSingleSlot | kCmdFlagsHash | kCmdFlagsUpdateCache | kCmdFlagsDoFromCache | kCmdFlagsPreDo);
cmd_table->insert(std::pair<std::string, std::unique_ptr<Cmd>>(kCmdNameHKeys, std::move(hkeysptr)));
////HLenCmd
std::unique_ptr<Cmd> hlenptr =
std::make_unique<HLenCmd>(kCmdNameHLen, 2, kCmdFlagsRead | kCmdFlagsSingleSlot | kCmdFlagsHash);
std::make_unique<HLenCmd>(kCmdNameHLen, 2, kCmdFlagsRead | kCmdFlagsSingleSlot | kCmdFlagsHash | kCmdFlagsUpdateCache | kCmdFlagsDoFromCache | kCmdFlagsPreDo);
cmd_table->insert(std::pair<std::string, std::unique_ptr<Cmd>>(kCmdNameHLen, std::move(hlenptr)));
////HMgetCmd
std::unique_ptr<Cmd> hmgetptr =
std::make_unique<HMgetCmd>(kCmdNameHMget, -3, kCmdFlagsRead | kCmdFlagsSingleSlot | kCmdFlagsHash);
std::make_unique<HMgetCmd>(kCmdNameHMget, -3, kCmdFlagsRead | kCmdFlagsSingleSlot | kCmdFlagsHash | kCmdFlagsUpdateCache | kCmdFlagsDoFromCache | kCmdFlagsPreDo);
cmd_table->insert(std::pair<std::string, std::unique_ptr<Cmd>>(kCmdNameHMget, std::move(hmgetptr)));
////HMsetCmd
std::unique_ptr<Cmd> hmsetptr =
std::make_unique<HMsetCmd>(kCmdNameHMset, -4, kCmdFlagsWrite | kCmdFlagsSingleSlot | kCmdFlagsHash);
std::make_unique<HMsetCmd>(kCmdNameHMset, -4, kCmdFlagsWrite | kCmdFlagsSingleSlot | kCmdFlagsHash | kCmdFlagsUpdateCache | kCmdFlagsDoFromCache);
cmd_table->insert(std::pair<std::string, std::unique_ptr<Cmd>>(kCmdNameHMset, std::move(hmsetptr)));
////HSetnxCmd
std::unique_ptr<Cmd> hsetnxptr =
std::make_unique<HSetnxCmd>(kCmdNameHSetnx, 4, kCmdFlagsWrite | kCmdFlagsSingleSlot | kCmdFlagsHash);
std::make_unique<HSetnxCmd>(kCmdNameHSetnx, 4, kCmdFlagsWrite | kCmdFlagsSingleSlot | kCmdFlagsHash | kCmdFlagsUpdateCache | kCmdFlagsDoFromCache);
cmd_table->insert(std::pair<std::string, std::unique_ptr<Cmd>>(kCmdNameHSetnx, std::move(hsetnxptr)));
////HStrlenCmd
std::unique_ptr<Cmd> hstrlenptr =
std::make_unique<HStrlenCmd>(kCmdNameHStrlen, 3, kCmdFlagsRead | kCmdFlagsSingleSlot | kCmdFlagsHash);
std::make_unique<HStrlenCmd>(kCmdNameHStrlen, 3, kCmdFlagsRead | kCmdFlagsSingleSlot | kCmdFlagsHash | kCmdFlagsUpdateCache | kCmdFlagsDoFromCache | kCmdFlagsPreDo);
cmd_table->insert(std::pair<std::string, std::unique_ptr<Cmd>>(kCmdNameHStrlen, std::move(hstrlenptr)));
////HValsCmd
std::unique_ptr<Cmd> hvalsptr =
std::make_unique<HValsCmd>(kCmdNameHVals, 2, kCmdFlagsRead | kCmdFlagsSingleSlot | kCmdFlagsHash);
std::make_unique<HValsCmd>(kCmdNameHVals, 2, kCmdFlagsRead | kCmdFlagsSingleSlot | kCmdFlagsHash | kCmdFlagsUpdateCache | kCmdFlagsDoFromCache | kCmdFlagsPreDo);
cmd_table->insert(std::pair<std::string, std::unique_ptr<Cmd>>(kCmdNameHVals, std::move(hvalsptr)));
////HScanCmd
std::unique_ptr<Cmd> hscanptr =
Expand Down
Loading

0 comments on commit b658ec9

Please sign in to comment.