#ifndef DB_REDIS_HEADER #define DB_REDIS_HEADER #include "db.h" #include #include #include class DBRedis : public DB { public: DBRedis(const std::string &mapdir); std::vector getBlockPos(BlockPos min, BlockPos max) override; void getBlocksOnXZ(BlockList &blocks, int16_t x, int16_t z, int16_t min_y, int16_t max_y) override; ~DBRedis() override; private: using pos2d = std::pair; static std::string replyTypeStr(int type); void loadPosCache(); void HMGET(const std::vector &positions, std::vector *result); // indexed by Z, contains all (x,y) position pairs std::unordered_map> posCache; redisContext *ctx; std::string hash; }; #endif // DB_REDIS_HEADER