add redis sentinel support and custom shard key generate function

```
settings = {
    "servers": [
        {'name': 'node1', 'host': '127.0.0.1', 'port': 6379, 'db': 0},
        {'name': 'node2', 'host': '127.0.0.1', 'port': 6379, 'db': 1},
        {'name': 'node3', 'host': '127.0.0.1', 'port': 6379, 'db': 2},
    ]
}
```