Linking with CloudpagesURL automatically inserts the subscriberkey to the landingpage with the QS parameter that salesforce attaches (its hashed with more values but subscriberkey is in it).
The way to go would just be RedirectTo(CloudpagesURL(999))
To attach parameters that are not part of salesforce QS parameter it would be Concat(RedirectTo(CloudpagesURL(999)),'¶metername=',@ampscriptvariable)
OR as Lukas Lunow already mentioned in the commend below %%=RedirectTo(CloudPagesURL(999, 'parametername', @ampscriptvariable, 'parametername2', @ampscriptvariable2))=%%
. There should not be a difference between these functions/implementations (for me it was - but it could have been my mistake). CloudpagesURL function