def multi_set(self, hash_key, sortkey_value_dict, ttl=0, timeout=0): """ Set multiple sort_keys-values under hash_key to be stored. :param hash_key: (str) which hash key used for this API. :param sortkey_value_dict: (dict) <sort_key, value> pairs in dict. :param ttl: (int) ttl(time to live) in seconds of these data. :param timeout: (int) how long will the operation timeout in milliseconds. if timeout > 0, it is a timeout value for current operation, else the timeout value specified to create the instance will be used. :return: (tuple<error_types.code.value, _>) (code, ign) code: error_types.ERR_OK.value when data stored succeed. ign: useless, should be ignored. """ peer_gpid = self.table.get_hash_key_pid(hash_key) session = self.table.get_session(peer_gpid) kvs = [ key_value(blob(str(k)), blob(str(v))) for k, v in sortkey_value_dict.items() ] ttl = get_ttl(ttl) req = multi_put_request(blob(hash_key), kvs, ttl) op = RrdbMultiPutOperator(peer_gpid, req) if not session or not op: return error_types.ERR_INVALID_STATE.value, 0 return session.operate(op, timeout)
def set(self, hash_key, sort_key, value, ttl=0, timeout=0): """ Set value to be stored in <hash_key, sort_key>. :param hash_key: (str) which hash key used for this API. :param sort_key: (str) which sort key used for this API. :param value: (str) value to be stored under <hash_key, sort_key>. :param ttl: (int) ttl(time to live) in seconds of this data. :param timeout: (int) how long will the operation timeout in milliseconds. if timeout > 0, it is a timeout value for current operation, else the timeout value specified to create the instance will be used. :return: (tuple<error_types.code.value, None>) (code, ign) code: error_types.ERR_OK.value when data stored succeed. ign: useless, should be ignored. """ blob_key = self.generate_key(hash_key, sort_key) partition_hash = self.table.get_blob_hash(blob_key) peer_gpid = self.table.get_gpid_by_hash(partition_hash) session = self.table.get_session(peer_gpid) op = RrdbPutOperator( peer_gpid, update_request(blob_key, blob(value), get_ttl(ttl)), partition_hash) if not session or not op: return error_types.ERR_INVALID_STATE.value, 0 return session.operate(op, timeout)