You can use a variant of what I describe here:
http://www.dr-josiah.com/2013/10/multi-column-sql-like-sorting-in-redis.html to build your scores. I used it to build sorting options over ZSETs with the columns split up, but you can combine them in advance if this is the only sort you care about.
Basically, what it does is to create a composite ZSET score that represents *both* your game score and your game time, at the same time. As an example, we'll pretend that your game scores range from 0 to 100 (this is necessary because scores are inversely ordered with respect to who is #1 vs. #2, etc.), and game times can range from 0 to 1000 seconds.
You can create your new score for the ZSET by:
zset_score = (100 - score) * 1000 + time
If you take examples from your list: (10, 48), (8, 48), ..., you get the ZSET scores: 90048, 92048, 92052, 94032, 95050, which will have indexes in your ZSET of 0, 1, 2, 3, and 4, respectively. Which is exactly the ranking that you'd like.
- Josiah