Trên thực tế khi bạn sử dụng PersonClient.Lists["urn:names:current"]
bạn thực sự đang lưu trữ một tham chiếu đến một Kết nối RedisClient không an toàn cho chuỗi. Sẽ ổn nếu nó trong ứng dụng GUI hoặc Console, nhưng không lý tưởng trong ứng dụng web đa luồng. Trong hầu hết các tình huống, bạn muốn sử dụng nhà máy sản xuất kết nối an toàn luồng, tức là
var redisManager = new PooledRedisClientManager("localhost:6379");
Hoạt động rất giống một nhóm kết nối cơ sở dữ liệu. Vì vậy, bất cứ khi nào bạn muốn truy cập RedisClient sẽ hoạt động như:
using (var redis = redisManager.GetClient())
{
var allItems = redis.As<Person>().Lists["urn:names:current"].GetAll();
}
Lưu ý:.As<T>
là một bí danh ngắn hơn cho .GetTypedClient<T>
Một lối tắt thuận tiện khác để thực thi một ứng dụng khách đã nhập từ redisManager là:
var allItems = redisManager.ExecAs<Person>(r => r.Lists["urn:names:current"].GetAll());
Tôi thường thích chuyển khoảng IRedisClientsManager
trong mã của tôi để nó không giữ kết nối RedisClient nhưng có thể truy cập nó bất cứ khi nào nó cần.