MySQL only caches the indexes in MySQL's memory, not the data. The data is only cached by the underlying operating system's filesystem caches. The most important value to tune in my.cnf is
key_buffer_size which will allocate memory for MyISAM to cache indexes.
However, unless you have some specific reason for using MyISAM tables you should convert those tables to InnoDB. In this day and age, there are less than a handful of reasons to use use MyISAM and MyISAM is not good for concurrency, data integrity, or crash recovery.
If you switch to InnoDB, the most important setting is
innodb_buffer_pool_size which is the internal memory cache that will cache data pages & indexes. Other things to consider are the
innodb_log_file_size and make sure to set
innodb_file_per_table=1. With 4GB of data+indexes, setting
innodb_buffer_pool_size=4G is reasonable. If you are running in a highly concurrent environment, you could experiment with values for
innodb_thread_concurrency. My recommendation is to start with innodb_thread_concurrency=0, but you might find it necessary to explicitly set it to be somewhere between 4-8 depending on your workload and version of MySQL.