How to do "Start Caching" the sql table on the start of server?

hello guys
i am using mix/otp for my backend project and my server is running on AWS
i want to cache my one of table (almost 1000 rows , mysql) on the start of the server.

how can i do that.

help me here.

What have you tried?

sorry i don’t even know
how to start.
where to write code.
how the server will perform this task when it start.
can we explain me the whole procedure??so that can i make a start.

Try going through the guides on the elixir website: Introduction - The Elixir programming language. Completing those – especially the “GenServer” and “Supervisor and Application” section – should give you a good first introduction on the pieces you’ll need to do run processes on startup of your application.

i know how genserver, supervisor work and how application start all their child.

now the problem statement is
i have an mysql_db and and in that my_table.
now i have to cache that table in the memory such a way that i can write ecto query to get data form cached db.

something like Repo.get_all(query) will query in the cached data.

is it possible or i am thinking something blunder. :grimacing:

This is a bit trickier since the data is no longer in an actual database. If you cache it in :ets you can use GitHub - evadne/etso: Ecto 3 adapter allowing use of Ecto schemas held in ETS tables but let’s take a step back.

If you only have 1000 records, this all feels like a lot of work, can you elaborate on what your use case is?

You could use cachex.

It does not look as something You would learn as a total newbie in Elixir, is that a task for your job?

Don’t forget one of the most difficult job is to know when to invalidate cache…

1 Like

I think you would be better off simply caching the entire table in the database layer. Either by copying your table to MEMORY storage type table at app startup or use the InnoDB storage method for the table and allocate enough cache in MySQL for it to hold the whole table.