1

3 つの hashKey フィールド (clientId - 文字列、securityId - 文字列、および transactionDate - 日付) に基づいて Redis Cache を検索する必要があるという要件があります。Id で検索するための十分に単純な方法を実装する基本的な POC を行いました。

コード:

private RedisTemplate<String, EquityFeeds> redisTemplate;

private HashOperations hashOperations;

public EquityFeedsRedisRepositoryImpl(RedisTemplate<String, EquityFeeds> redisTemplate) {
   this.redisTemplate = redisTemplate;
   this.hashOperations = redisTemplate.opsForHash();
}

public EquityFeeds findById(String id) {
    return (EquityFeeds) hashOperations.get("KEY", id);
}

上記の 3 つの hashKeys ( clientId - 文字列、securityId - 文字列、およびtransactionDate - 日付)に基づいて RedisCache を検索するにはどうすればよいですか。

非常に基本的で単純な保存操作があります。

コード:

@Override
public void save(EquityFeeds equityFeeds) {
   hashOperations.put("EQUITY", equityFeeds.getId(), equityFeeds);
}

RediSearch for Java に関連する記事を 1 つだけ見つけました - JRediSearch - RediSearch Java Client https://oss.redislabs.com/redisearch/java_client.html

このサイトを使用してプログラム サンプルを実行した場合: コード:

public static void main(String[] args) {

        Client client = new Client("EQUITY", "localhost",6379);

        Schema sc = new Schema()
                        .addTagField("clientId")
                        .addTagField("securityId")
                        .addTagField("transactionDate");

        client.createIndex(sc, Client.IndexOptions.defaultOptions());

        Map<String, Object> fields = new HashMap<String, Object>();
        fields.put("clientId", "hello world");
        fields.put("securityId", "lorem ipsum");
        fields.put("transactionDate", "1337");

        client.addDocument("doc1", fields);

        Query q = new Query("hello world");

        SearchResult res = client.search(q);

        System.out.println("Result: "+res.totalResults);                        

    }

以下のように例外が発生しています。

スレッド「メイン」の例外 redis.clients.jedis.exceptions.JedisDataException: ERR 不明なコマンド 'FT.CREATE'

ラインで

client.createIndex(sc, Client.IndexOptions.defaultOptions());

私はネット上でこれに対する解決策を得ていません。

4

1 に答える 1

0

RediSearch モジュールを Redis サーバーにロードしていないようです。

参照: RediSearch のクイック スタート ガイド

RediSearch がプリロードされた状態で、Redis の Docker コンテナーを簡単に実行できます。

docker run -p 6379:6379 redislabs/redisearch:latest
于 2020-03-31T14:06:29.727 に答える