Skip to content

Commit 60a273f

Browse files
committed
feat: add CommandListener interface for monitoring Redis command operations
1 parent 11a95fe commit 60a273f

File tree

3 files changed

+251
-76
lines changed

3 files changed

+251
-76
lines changed
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
package com.redis.om.spring.ops;
2+
3+
import com.redis.om.spring.autocomplete.Suggestion;
4+
import com.redis.om.spring.repository.query.autocomplete.AutoCompleteOptions;
5+
import redis.clients.jedis.search.FTCreateParams;
6+
import redis.clients.jedis.search.FTSearchParams;
7+
import redis.clients.jedis.search.IndexOptions;
8+
import redis.clients.jedis.search.Query;
9+
import redis.clients.jedis.search.Schema;
10+
import redis.clients.jedis.search.SearchProtocol;
11+
import redis.clients.jedis.search.SearchResult;
12+
import redis.clients.jedis.search.aggr.AggregationBuilder;
13+
import redis.clients.jedis.search.aggr.AggregationResult;
14+
import redis.clients.jedis.search.schemafields.SchemaField;
15+
import java.util.List;
16+
import java.util.Map;
17+
import java.util.Set;
18+
19+
public interface CommandListener {
20+
default void searchStarted(String indexName, Query q, FTSearchParams params) {}
21+
default void searchFinished(String indexName, Query q, FTSearchParams params, SearchResult searchResult){}
22+
23+
default void createIndexStarted(String indexName, FTCreateParams params, List<SchemaField> fields, Schema schema, IndexOptions options){}
24+
default void createIndexFinished(String indexName, FTCreateParams params, List<SchemaField> fields, Schema schema, IndexOptions options, String result){}
25+
26+
default void aggregateStarted(String indexName, AggregationBuilder q){}
27+
default void aggregateFinished(String indexName, AggregationBuilder q){}
28+
29+
default void cursorDeleteStarted(String string, long cursorId){}
30+
default void cursorDeleteFinished(String string, long cursorId, String result){}
31+
32+
default void cursorReadStarted(String string, long cursorId, int count){}
33+
default void cursorReadFinished(String string, long cursorId, int count, AggregationResult aggregationResult){}
34+
35+
default void explainStarted(String string, Query q){}
36+
default void explainFinished(String string, Query q, String s){}
37+
38+
default void infoStarted(String string){}
39+
default void infoFinished(String string, Map<String, Object> stringObjectMap){}
40+
41+
default void dropIndexStarted(String string){}
42+
default void dropIndexFinished(String string, String result){}
43+
44+
default void dropIndexAndDocumentsStarted(String string){}
45+
default void dropIndexAndDocumentsFinished(String string, String result){}
46+
47+
default void addSuggestionStarted(String string, String key, String suggestion, double score){}
48+
default void addSuggestionFinished(String string, String key, String suggestion, double score, long result){}
49+
50+
default void getSuggestionStarted(String string, String key, String prefix, AutoCompleteOptions options){}
51+
default void getSuggestionFinished(String string, String key, String prefix, AutoCompleteOptions options, List<Suggestion> list){}
52+
53+
default void deleteSuggestionStarted(String string, String key, String entry){}
54+
default void deleteSuggestionFinished(String string, String key, String entry, boolean result){}
55+
56+
default void getSuggestionLengthStarted(String string, String key){}
57+
default void getSuggestionLengthFinished(String string, String key, long result){}
58+
59+
default void alterIndexStarted(String string, SchemaField[] fields){}
60+
default void alterIndexFinished(String string, SchemaField[] fields, String result){}
61+
62+
default void setConfigStarted(String string, String option, String value){}
63+
default void setConfigFinished(String string, String option, String value, String result){}
64+
65+
default void getConfigStarted(String string, String option){}
66+
default void getConfigFinished(String string, String option, Map<String, Object> result){}
67+
68+
default void getIndexConfigStarted(String string, String option){}
69+
default void getIndexConfigFinished(String string, String option, Map<String, Object> result){}
70+
71+
default void addAliasStarted(String string, String name){}
72+
default void addAliasFinished(String string, String name, String result){}
73+
74+
default void updateAliasStarted(String string, String name){}
75+
default void updateAliasFinished(String string, String name, String result){}
76+
77+
default void deleteAliasStarted(String string, String name){}
78+
default void deleteAliasFinished(String string, String name, String result){}
79+
80+
default void updateSynonymStarted(String string, String synonymGroupId, String[] terms){}
81+
default void updateSynonymFinished(String string, String synonymGroupId, String[] terms, String result){}
82+
83+
default void dumpSynonymStarted(String string){}
84+
default void dumpSynonymFinished(String string, Map<String, List<String>> result){}
85+
86+
default void tagValsStarted(String string, String field){}
87+
default void tagValsFinished(String string, String field, Set<String> result){}
88+
89+
default void commandFailed(SearchProtocol.SearchCommand command, String indexName, Throwable t){}
90+
}

redis-om-spring/src/main/java/com/redis/om/spring/ops/RedisModulesOperations.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import com.redis.om.spring.ops.pds.*;
1010
import com.redis.om.spring.ops.search.SearchOperations;
1111
import com.redis.om.spring.ops.search.SearchOperationsImpl;
12+
import java.util.Optional;
1213

1314
/**
1415
* A record that provides centralized access to Redis module operations.
@@ -26,7 +27,8 @@
2627
* @param client the Redis modules client for executing commands
2728
* @param template the Spring Data Redis template for additional Redis operations
2829
* @param gsonBuilder the Gson builder for JSON serialization/deserialization configuration
29-
*
30+
* @param commandListener An optional command listener for monitoring Redis commands
31+
*
3032
* @author Redis OM Spring Team
3133
* @see JSONOperations
3234
* @see SearchOperations
@@ -37,7 +39,7 @@
3739
* @see TDigestOperations
3840
*/
3941
public record RedisModulesOperations<K>(RedisModulesClient client, StringRedisTemplate template,
40-
GsonBuilder gsonBuilder) {
42+
GsonBuilder gsonBuilder, Optional<CommandListener> commandListener) {
4143

4244
/**
4345
* Creates and returns operations for interacting with RedisJSON module.
@@ -65,7 +67,7 @@ public JSONOperations<K> opsForJSON() {
6567
* @return a {@link SearchOperations} instance for search and indexing operations
6668
*/
6769
public SearchOperations<K> opsForSearch(K index) {
68-
return new SearchOperationsImpl<>(index, client, template);
70+
return new SearchOperationsImpl<>(index, client, template, commandListener);
6971
}
7072

7173
/**

0 commit comments

Comments
 (0)