void ProducerStateTable::del(string key, string op /*= DEL_COMMAND*/, string prefix) { // Assembly redis command args into a string vector vector<string> args; args.push_back("EVALSHA"); args.push_back(m_shaDel); args.push_back("3"); args.push_back(getChannelName()); args.push_back(getKeySetName()); args.push_back(getKeyName(key)); args.push_back("G"); args.push_back(key); args.push_back("''"); // Transform data structure vector<const char *> args1; transform(args.begin(), args.end(), back_inserter(args1), [](const string &s) { return s.c_str(); } ); // Invoke redis command RedisCommand command; command.formatArgv((int)args1.size(), &args1[0], NULL); m_pipe->push(command, REDIS_REPLY_NIL); if (!m_buffered) { m_pipe->flush(); } }
void ProducerStateTable::set(string key, vector<FieldValueTuple> &values, string op /*= SET_COMMAND*/, string prefix) { // Assembly redis command args into a string vector vector<string> args; args.push_back("EVALSHA"); args.push_back(m_shaSet); args.push_back(to_string(values.size() + 2)); args.push_back(getChannelName()); args.push_back(getKeySetName()); args.insert(args.end(), values.size(), getKeyName(key)); args.push_back("G"); args.push_back(key); for (auto& iv: values) { args.push_back(fvField(iv)); args.push_back(fvValue(iv)); } // Transform data structure vector<const char *> args1; transform(args.begin(), args.end(), back_inserter(args1), [](const string &s) { return s.c_str(); } ); // Invoke redis command RedisCommand command; command.formatArgv((int)args1.size(), &args1[0], NULL); m_pipe->push(command, REDIS_REPLY_NIL); if (!m_buffered) { m_pipe->flush(); } }