I used to attempt to block spammers by daily editing of the .htaccess file but after there were several hundred IPs on the list, it was obvious I could not keep up with the rate of new spammers exploding internationally onto the scene daily.
Most recently, I installed the BotScout script which is free, but not a plugin because you have to edit a couple of lines, and it cut the spam registrations in half. However, it still let a few bad spam bots register everyday anyway, without my ever receiving an email that a new user had registered. So I had to check the new users daily to manually remove the bad spam bot registrations. Then I installed the TimesToCome free WP plugin, and between the two scripts which are both running, it is like having double protection against spammers.