数据库 - 请问redis遇到条件查询怎么办呢?
巴扎黑
巴扎黑 2017-04-21 11:16:04
0
1
750

我是新手刚想学redis,但是看了很多资料都在说redis怎么快怎么快,很少说具体怎么应用到项目上的,就算有也是做队列或是缓存用。看了看redis入门资料也说redis只支持k->v类型的数据保存且没有条件查询,那如果遇到条件查询了怎么办呢?如保存了一些对象:a{name:lijiang age:60 } 请问怎么查询所有姓li的用户或所有年龄是60的用户呢?

巴扎黑
巴扎黑

membalas semua(1)
小葫芦

Cepat datang pada harga. redis ialah pangkalan data bukan hubungan. Untuk membuat pertanyaan berdasarkan syarat, anda mesti membuat indeks untuk data secara manual.

Hashset boleh digunakan untuk menyimpan objek. Andaikan bahawa kunci hashset adalah dalam bentuk 'user:name'.
Pertanyaan bersyarat boleh menggunakan set diisih. kunci ialah medan objek. Apabila mencari nama, anda boleh menggunakan arahan zRangeByLex:

redis> zadd personIndex:name 0 lijiang 0 likui 0 abcde
(integer) 3
redis> zRangeByLex personIndex:name [li (lj
1) "lijiang"
2) "likui"

Selepas itu, anda boleh menggunakan user:lijiang dan user:likui untuk mendapatkan maklumat yang berkaitan.

Untuk mencari orang yang namanya bermula dengan li, anda boleh menggunakan '[li (lj') untuk mencari rentetan dalam julat separuh terbuka [li..., lj). Apabila redis membandingkan rentetan dan awalannya, yang lebih panjang adalah lebih besar (contohnya: liA > li, liABCDEF... < lj).

(Nota: zRangeByLex memerlukan versi redis >2.8.9)

Untuk mencari umur secara bersyarat, anda boleh menggunakan perintah zRangeByScore set diisih:

redis> zadd personIndex:age 60 lijiang 30 likui 20 abcde
(integer) 3
redis> zRangeByScore personIndex:age 30 60
1) "likui"
2) "lijiang"

Tiga parameter zRangeByScore ialah: kunci, min, maks (selang tertutup)

Rujukan: http://redis.io/commands/

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan