[ 
https://issues.apache.org/jira/browse/NIFI-4043?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16043782#comment-16043782
 ] 

ASF GitHub Bot commented on NIFI-4043:
--------------------------------------

Github user ijokarumawak commented on a diff in the pull request:

    https://github.com/apache/nifi/pull/1901#discussion_r121032772
  
    --- Diff: 
nifi-nar-bundles/nifi-standard-services/nifi-distributed-cache-client-service-api/src/main/java/org/apache/nifi/distributed/cache/client/AtomicDistributedMapCacheClient.java
 ---
    @@ -71,6 +73,23 @@
          * @return true only if the key is replaced.
          * @throws IOException if unable to communicate with the remote 
instance
          */
    +    @Deprecated
         <K, V> boolean replace(K key, V value, Serializer<K> keySerializer, 
Serializer<V> valueSerializer, long revision) throws IOException;
    --- End diff --
    
    Would it be a better refactoring if we make this method signature as:
    ```
    <K, V> boolean replace(CacheEntry<K, V> Serializer<K> keySerializer, 
Serializer<V> valueSerializer) throws IOException
    ```
    
    This way we can create a subclass of CacheEntry, such as 
CacheEntryWithRevision and within the method we can decide which replacing 
logic to use.
    
    Or we may be able to use generics for revision:
    ```
    interface CacheEntry<K, V> -> interface CacheEntry<K, V, R>
    ```
    Then `R` can be long for some implementation, or String if target cache 
system doesn't support it.
    
    The reason why I used revision is that passing new and previous value would 
double the size we need to send through network. There are various cache 
implementation and some support things like revision and some don't. When it 
does support revision, I think we should utilize it.
    
    Actually, I'm working on adding new MapCacheClient against Couchbase 
Server, and it supports revision.
    
https://github.com/ijokarumawak/nifi/commit/f43df899813d3f46eafb78a1164b8818f055f7f6#diff-40925d0ac131c75c2073f168b45fdb93R173


> Implement a DistributedMapCacheClient backed by Redis
> -----------------------------------------------------
>
>                 Key: NIFI-4043
>                 URL: https://issues.apache.org/jira/browse/NIFI-4043
>             Project: Apache NiFi
>          Issue Type: Improvement
>            Reporter: Bryan Bende
>            Assignee: Bryan Bende
>            Priority: Minor
>
> We should provide other caching options besides the 
> DistributedMapCacheClient/DistributedMapCacheServer. 
> Redis is a popular caching solution and we could implement a 
> RedisDistributedMapCacheClient that would let us use all the existing 
> processors against Redis.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to