The selected database shouldn't be set by the adapter
I've been reviewing the repoze.what Redis plugin and the Python interface for Redis, and I believe the former shouldn't select the database.
What would happen if a user wants to reuse the Redis db object? It'd be pretty common if they use a custom host, port and/or timeout.
But if they use a custom object, and want to reuse it in the groups and permissions adapter, this will lead to a bug because both adapters will use the same database.
One solution could be not to select the database in the constructor, but select it explicitly right before a write operation (e.g., item addition, section removal). For this to work, you'd have to store the database name in the adapter, instead of select()'ing it with the db_connection.