I'm wondering if using *sync.Map* wouldn't be the best option for 
performance reasons for this application, since it's a specialized map 
implementation. Does anyone know anything about this? 

Em quarta-feira, 9 de outubro de 2024 às 15:27:09 UTC-3, robert engels 
escreveu:

> The best way (imo) to perform the compaction is to use multiple sub maps - 
> i.e. partition the keys - and then you can compact these using RW locks to 
> limit the stop the world.
>
> On Oct 9, 2024, at 1:07 PM, Nico Braun <rainbo...@gmail.com> wrote:
>
> I started thinking about the compaction, and if there was a way to prevent 
> stopping the world during cleanup. May be interesting to look how etcd or 
> redis something does it.
>
> Could you use a RWMutex for this map, or is this not a good use case?
>
> On Wednesday 9 October 2024 at 08:36:34 UTC+2 Def Ceb wrote:
>
>> I've found this package to be useful for this in the past: 
>> https://github.com/jellydator/ttlcache
>>
>> On Wed, Oct 9, 2024, 04:31 Cleberson Pedreira Pauluci <
>> pauluci....@gmail.com> wrote:
>>
>>> Hello. I found this very interesting.
>>>
>>> I have some questions:
>>>
>>> Have you considered the possibility of using *time.Duration* for the 
>>> *maxTTL* parameter?
>>> Maybe wouldn't it be more interesting if each item had its own *maxTTL* 
>>> instead of just one for any item on the map?
>>>
>>> If you'll allow me, I made those adaptations to your original code.
>>> Here's the example: https://go.dev/play/p/rba6HCJe-4X
>>>
>>> Thanks.
>>>
>>>
>>> Em segunda-feira, 7 de outubro de 2024 às 16:37:53 UTC-3, Alex Pliutau 
>>> escreveu:
>>>
>>>> In some cases your application doesn’t need Redis, and internal 
>>>> in-memory map with locks and expiration will suffice.
>>>>
>>>> For example you already know the size of the map and you don’t need to 
>>>> store a lot of data. Use cases could be IP rate limiting, or any other 
>>>> short-lived data.
>>>>
>>>> Here is how you can implement this data structure in Go, let’s call it 
>>>> a TTLMap:
>>>>
>>>> https://gist.github.com/plutov/69d22552c696d48496563529c624e0b7 
>>>>
>>>
>>> -- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "golang-nuts" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to golang-nuts...@googlegroups.com.
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/golang-nuts/a59272be-7277-4cb6-a7a7-8bf4bdcefc40n%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/golang-nuts/a59272be-7277-4cb6-a7a7-8bf4bdcefc40n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to golang-nuts...@googlegroups.com.
>
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/golang-nuts/924e3ebf-c2a6-4288-be14-8b187a46ab25n%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/golang-nuts/924e3ebf-c2a6-4288-be14-8b187a46ab25n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/fc43af25-566a-4e88-b1e3-ba97e226f351n%40googlegroups.com.

Reply via email to