Hey,

Thought I had a specific FAQ page for this but maybe not?

The reason why memcached can't delete groups of keys atomically, is
because it's a distributed system by default and the servers don't
communicate. Keys are spread across many servers. You can use namespacing
instead:

https://github.com/memcached/memcached/wiki/ProgrammingTricks#namespacing

which uses a tertiary key as an index.

Large objects are stored internally by splitting them into small objects.
Set the item size limit (-I) as high as you need, reasonably.

RE: sets in general. I have ideas, but not sure when I'd get to them.

On Thu, 22 Jul 2021, Mihai D wrote:

> I think I should provide some common usage patterns related to the first idea 
> in the previous mail (delete sets):It is common to store a set
> of objects using setm in a single command and retrieve all of them together 
> in a single getm command. Set aliases would spare the user having
> to care about creating and storing or recomputing the keys for each 
> individual object. I think this would not add much complexity since I'm
> not proposing set operations like union or intersection.
>
> On different note, it is also common to split a big object (>1MB) into small 
> individual 1MB objects to store. There could be a command that
> would allow storing a big object and let memcached do the spliting as the 
> data arrives. I wonder if this would prompt users to start using
> memcached in use cases it is not design for tho. I also wonder how common 
> this use case is.
>
> Regarding the DAG keys, maybe it is too general and adds too much complexity.
> El jueves, 22 de julio de 2021 a las 17:34:53 UTC+2, Mihai D escribió:
>       I wonder if memcached implements a mechanism for tagging keys with a 
> piece of metadata such that in a single operation you can
>       invalidate all keys with the same metadata tag, basically supporting 
> sets of keys for the delete operation.
> Alternatively, and more generally, I wonder if memcached can maintain a 
> tree/DAG of relationships or dependencies between keys, like
> this:
>
> k1 -> k2
>      |-> k3 -> k4
>
> such that when you delete k1,   k2, k3, and k4 are also deleted but if you 
> delete k3, only k3 and k4 are deleted.
>
> I'm not aware if these mechanisms exist already, since I'm not familiar with 
> all of memcached. 
>
> If they don't, I'd like to start a discussion on implementing one or both of 
> these mechanisms or similar ones. I understand that
> memcached tries to be minimal and with predictable amortized constant time 
> performance, so *maybe* these features are overkill.
> Nevertheless, I'd like to hear the devs opinion.
>
> Currently, if you need such a feature you would implement it in the client, 
> keeping the metadata there and performing multiple delete
> commands when needed.
>
> Users who do not need such a feature should not suffer performance overhead 
> if they don't use them.
>
>
> Regards,
> Mihai (gh:hMihaiDavid)
>
> --
>
> ---
> You received this message because you are subscribed to the Google Groups 
> "memcached" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to memcached+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/memcached/da094a37-f637-43d5-9306-4cc058c9d3c6n%40googlegroups.com.
>
>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"memcached" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to memcached+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/memcached/40908cc2-c9a2-cb99-beb2-a6cb8c1ba34f%40rydia.net.

Reply via email to