I find that it is not so easy to fix this bug, so I have 3 suggestions here.
We can have a discussion here:
a. Just rewrite the whole INCRBYFLOAT cmd as SETEX key value expiretime and change cmd->proc to SETEX, but I don't think this is an elegent solution;
b. Add a new cmd named UPDATE or sth else which just updates the value and DO NOT remove the expire time. Then INCRBYFLOAT can be rewritten as this cmd. As I known, lots of users need a cmd like UPDATE because they just wanna set value and leave the expire time alone;
c. Like the privious one, we can also extend SET to SETUX or anything else only to update the value.