Что делать, чтобы получить слово id на 1000 в redis-cli?
Я написал программу, в которой положение каждого слова в нем, упорядоченный набор будет индексом слова.
что делать, чтобы получить слово id на 1000 в redis-cli?
Код программы:
const fs = require('fs'), redis = require('redis');
function readFile(filename, key) {
const client = redis.createClient();
client.on("error", (err) => { console.log("Error " + err); });
fs.readFile(filename, 'utf8', function(err, data) {
if (err) {
return console.log(err);
}
var splits = data.split(/\W/).filter(
(value) => value.length > 1
).map(
(value) => value.toLocaleLowerCase()
);
splits.forEach((value, index) => {
client.zadd(key, 0, value);
});
client.quit();
});
}
readFile('cano.txt', 'sorted');
readFile('t8.shakespeare.txt', 'sorted');
1 ответ
Вы можете использовать ZRANGE, получить элемент по позиции, https://redis.io/commands/zrange. Однако вы не должны использовать zset для сортировки ключей с одинаковым счетом. Сложность сортировки слов будет на самом деле O(N2).
redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 2 "two"
(integer) 1
redis> ZADD myzset 3 "three"
(integer) 1
redis> ZRANGE myzset 0 -1
1) "one"
2) "two"
3) "three"
redis> ZRANGE myzset 2 3
1) "three"
redis> ZRANGE myzset -2 -1
1) "two"
2) "three"
redis>