Hi, VirtuallyMike!
Sorry for the late reply! Got it while I'm in deep sleep.
It's not your fault that the ThreadwisePool is less than ideal. It's been one of the thing that I had never find time to really fix. On the other hand, I've also started a bit of work on sharing connections globally across all redis instances but it's been really tricky and I havn't had time to hack on Sider for a long while.
I've just got 4-days holiday though so maybe I'll look into it and maybe write a better tutorial/explanation.
If you are concerned about performance, the best way I recommend you to use right now is to use an IoC container to manages the pool of IRedisClient<string> instances -- that way you will have better control of client activations/deactivations.
The way ThreadwisePool works right now is to store clients in a ThreadLocal<WeakReference> which means 2 things : if memory gets low, clients will be disposed automatically and that requests going to the same thread will reuse the same connection to redis. This should works fine for most website cases.
Now to answer some of your questions: