Что делать, чтобы получить слово 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> 
Другие вопросы по тегам