Removing value from Queue - MemoryStoreService

I am having trouble removing items from my queue with MemoryStoreService. How do I do this? I’ve looked for solutions elsewhere, but I can’t seem to find anything useful.

Here is how I am currently removing the items from the queue:

local readSuccess, readResult = pcall(function()
	return WinnerQueue:ReadAsync(50,false) -- make this value 3 later after all these other values are gone
end)
	
if readSuccess then
	local success, queueItems = pcall(function()
		print(readResult)
		return WinnerQueue:RemoveAsync(readResult)
	end)
	print(readResult)
end

The first readResult returns the same as the second readResult. What am I doing wrong?

readResult is a variable. The variable does not get set to nil when you remove a data from the MemoryStore. You need to ReadAsync once more if you want to check after removing.

How come when I rerun the script the results that I removed still appear?

It seems like there might be a misunderstanding regarding how the ReadAsync and RemoveAsync functions work with the MemoryStoreService in Roblox. Let me clarify the correct approach.

When you call ReadAsync on a queue, it returns an array of items from the queue, up to the specified count. The items remain in the queue after the read operation unless you explicitly remove them using RemoveAsync.

Here’s how you can correctly remove items from your queue:

-- Assuming WinnerQueue is your queue object

-- Read items from the queue
local readSuccess, readResult = pcall(function()
    return WinnerQueue:ReadAsync(50, false) -- Read up to 50 items from the queue without removing them
end)

if readSuccess then
    -- Process the items read from the queue
    for _, item in ipairs(readResult) do
        -- Process each item from the queue
        print(item)
    end

    -- Now, remove the processed items from the queue
    local removeSuccess, removeResult = pcall(function()
        return WinnerQueue:RemoveAsync(readResult)
    end)

    if removeSuccess then
        print("Items successfully removed from the queue.")
    else
        warn("Failed to remove items from the queue:", removeResult)
    end
else
    warn("Failed to read items from the queue:", readResult)
end

In this code:

  1. We first read items from the queue using ReadAsync. This operation returns an array of items (readResult), but it doesn’t remove them from the queue.
  2. We then process the items read from the queue, for example, printing them or performing any other necessary operations.
  3. After processing the items, we use RemoveAsync to remove the items we just processed from the queue. We pass the array of items (readResult) returned by ReadAsync to RemoveAsync to specify which items to remove.

Make sure to handle errors properly using pcall as you’ve done in your code to avoid crashing your script if any errors occur during the read or remove operations.

How would I loop through the readResult and only remove values with a certain text?

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.