I'm using AWS Elasticache Redis to store user sessions for AWS Lambda.
To answer question (1):
If your instance has enough RAM to store the data (which I'll assume it does) then no problem. Redis is meant to be used to store data in-memory (with the possibility to flush to disk).
I've used it in production with millions of keys without a problem.
To answer question (2):
What is the maximum number of keys a single Redis instance can hold? and what the max number of elements in a Hash, List, Set, Sorted Set?
Redis can handle up to 232 keys, and was tested in practice to handle at least 250 million keys per instance.
Every hash, list, set, and sorted set, can hold 232 elements.
In other words your limit is likely the available memory in your system.