maliyet, pahalı olacaktır ön ya da sonuna yakın olmayan herhangi bir indeks bir liste erişme O (N). Büyük listeler için bu çok verimli değil.
Sarf malzemelerini kullanma ihtiyaçlarınız için daha uygun olabilir. Bu, bir listeden daha fazla bellek kullanır, ancak neredeyse O (1) erişim sağlar.
Redis'teki bir karma, rasgele alanlar ve değerler içerebilen adlandırılmış bir anahtardır.
Sen member_id (umarım bu kısa değerdir) kullanılarak adında tek Redis karma bütün kullanıcı kaydını saklayabilir. ": 42 kullanıcı" member_id kullanıcı başına benzersiz olması sağlanır, burada member_id 42.
hset user:42 email [email protected]
hset user:42 username foobar
hset user:42 logincount 0
Redis "anahtar adı" burada olan kullanıcı için bir karma doldurmak nasıl. Her kullanıcı, SQL veritabanındaki tek bir satıra benzer, ancak daha esnek olan tek bir anahtar alır. Daha sonra iki yardımcı karma'yı güncelleyebilirsiniz: bir kullanıcı üyelerini member_id ile eşlemek ve diğeri de e-posta adreslerini member_id ile eşlemek için. Bu üye_kimliği, kullanıcı adı ve e-posta adresi arasında 1: 1 bir ilişki olduğunu varsayar.
hset username_to_id foobar 42
hset email_to_id [email protected] 42
sen, ilk anahtar kullanıcı olarak karma gelen email
alanını almak sonra email_to_id
karma gelen member_id aramak ve belirli bir kullanıcı için e-posta adresini aramak gerekir
: Aynı şekilde
member_id, sen Bir kullanıcı adıyla başlayabilir,
username_to_id
karma dosyasında member_id'e bakabilir ve daha sonra kullanıcıda saklanan kullanıcı kaydına ulaşabilirsiniz:
member_id
hash. ":
kullanıcı" karma
redis> hget email_to_id [email protected]
"42"
redis> hget user:42 username
"foobar"
redis>
Sen daha fazla alan ekleyerek kullanıcıya daha fazla kayıt ekleyebilirsiniz: Burada
bir e-posta adresi verilen kullanıcı adı bakmak için örnektir. Eğer bir giriş sayacını artırmak istiyorsanız, onu da basittir: Sen redis.io sitesinde
more information about hashes bulabilirsiniz
redis> hincrby user:42 login_count 1
(integer) 1
redis> hgetall user:42
1. "email"
2. "[email protected]"
3. "username"
4. "foobar"
5. "login_count"
6. "1"
redis>
.
çok teşekkürler. ancak neden – Leon
setini ayarlamamış veya ayarlamamışsınız, ancak 1 m'lik bir kullanıcı 1m hash id değerine sahipse, özellikle, aldığınız zaman performansı düşürecektir – Leon