If you dont want script loading then below will work as a single command.
127.0.0.1:6379> eval "return redis.call('SET', KEYS[2], redis.call('GET', KEYS[1]))" 2 key1 key2
OK
Note that key1 value should be already set else you will get the below error
Lua redis() command arguments must be strings or integers
So check like below and set
127.0.0.1:6379> GET key1
(nil)
127.0.0.1:6379> SET key1 hello
OK
Now it will work.
If you want copy map to another new map key
eval "return redis.call('HMSET', KEYS[2], unpack(redis.call('HGETALL', KEYS[1])))" 2 existingMapKey newMapKey
One more way is while inserting time itself you can insert the value to two keys using MSET.
redis> MSET key1 "Hello" key2 "Hello"
"OK"
redis> GET key1
"Hello"
redis> GET key2
"Hello"
Ofcource this will not solve the issue of copying when the key is already created.
Also note that there is no way in redis more than one key is referring the same value object. All these workaround will create duplicate value objects. So if one of the value is updated will not reflect in another value object.