org.redkale.service

## 类 CacheSourceService<K extends java.io.Serializable,V>

- java.lang.Object
- - org.redkale.service.CacheSourceService<K,V>

- 类型参数:
    `K` - key类型
    `V` - value类型

    详情见: http://www.redkale.org

  所有已实现的接口:
    java.lang.AutoCloseable, Service, CacheSource<K,V>

      @AutoLoad(value=false)
       @ResourceType(value={CacheSourceService.class,CacheSource.class})
      public class CacheSourceService<K extends java.io.Serializable,V>
      extends java.lang.Object
      implements CacheSource<K,V>, Service, java.lang.AutoCloseable

- - ### 嵌套类概要

    嵌套类
    限定符和类型 | 类和说明
    --- | ---
    `static class` | `CacheSourceService.CacheEntry<K extends java.io.Serializable,T>`
    `static class` | `CacheSourceService.CacheEntryType`

  - ### 字段概要

    字段
    限定符和类型 | 字段和说明
    --- | ---
    `protected java.util.concurrent.ConcurrentHashMap<K,CacheSourceService.CacheEntry<K,?>>` | `container`

  - ### 构造器概要

    构造器
    构造器和说明
    `CacheSourceService()`

  - ### 方法概要

    所有方法 实例方法 具体方法
    限定符和类型 | 方法和说明
    --- | ---
    `void` | `appendListItem(java.nio.channels.CompletionHandler<java.lang.Void,K> handler, K key, V value)`
    `void` | `appendListItem(K key, V value)`
    `void` | `appendSetItem(java.nio.channels.CompletionHandler<java.lang.Void,K> handler, K key, V value)`
    `void` | `appendSetItem(K key, V value)`
    `void` | `close()`
    `void` | `destroy(AnyValue conf)` 进程退出时，调用Service销毁
    `void` | `exists(java.nio.channels.CompletionHandler<java.lang.Boolean,K> handler, K key)`
    `boolean` | `exists(K key)`
    `void` | `get(java.nio.channels.CompletionHandler<V,K> handler, K key)`
    `V` | `get(K key)`
    `void` | `getAndRefresh(java.nio.channels.CompletionHandler<V,K> handler, K key)`
    `V` | `getAndRefresh(K key)`
    `void` | `getCollection(java.nio.channels.CompletionHandler<java.util.Collection<V>,K> handler, K key)`
    `java.util.Collection<V>` | `getCollection(K key)`
    `void` | `getCollectionAndRefresh(java.nio.channels.CompletionHandler<java.util.Collection<V>,K> handler, K key)`
    `java.util.Collection<V>` | `getCollectionAndRefresh(K key)`
    `void` | `init(AnyValue conf)` 该方法必须是可以重复调用， 当reload时需要重复调用init方法
    `java.lang.String` | `name()`
    `void` | `refresh(java.nio.channels.CompletionHandler<java.lang.Void,K> handler, K key)`
    `void` | `refresh(K key)`
    `void` | `remove(java.nio.channels.CompletionHandler<java.lang.Void,K> handler, K key)`
    `void` | `remove(K key)`
    `void` | `removeListItem(java.nio.channels.CompletionHandler<java.lang.Void,K> handler, K key, V value)`
    `void` | `removeListItem(K key, V value)`
    `void` | `removeSetItem(java.nio.channels.CompletionHandler<java.lang.Void,K> handler, K key, V value)`
    `void` | `removeSetItem(K key, V value)`
    `void` | `set(java.nio.channels.CompletionHandler<java.lang.Void,K> handler, int expireSeconds, K key, V value)`
    `void` | `set(java.nio.channels.CompletionHandler<java.lang.Void,K> handler, K key, V value)`
    `void` | `set(int expireSeconds, K key, V value)`
    `void` | `set(K key, V value)`
    `void` | `setExpireSeconds(java.nio.channels.CompletionHandler<java.lang.Void,K> handler, K key, int expireSeconds)`
    `void` | `setExpireSeconds(K key, int expireSeconds)`
    `void` | `setNeedStore(boolean needStore)`
    `CacheSourceService` | `setStoreType(java.lang.Class keyType, java.lang.Class valueType)`

    - ### 从类继承的方法 java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### 从接口继承的方法 org.redkale.source.CacheSource

      `isOpen, isOpen`

- - ### 字段详细资料

    - #### container

          protected final java.util.concurrent.ConcurrentHashMap<K extends java.io.Serializable,CacheSourceService.CacheEntry<K extends java.io.Serializable,?>> container

  - ### 构造器详细资料

    - #### CacheSourceService

          public CacheSourceService()

  - ### 方法详细资料

    - #### setStoreType

          public final CacheSourceService setStoreType(java.lang.Class keyType,
                                                       java.lang.Class valueType)

    - #### setNeedStore

          public final void setNeedStore(boolean needStore)

    - #### init

          public void init(AnyValue conf)

      从接口复制的说明: `Service`
      该方法必须是可以重复调用， 当reload时需要重复调用init方法
      指定者:
        `init` 在接口中 `Service`
      参数:
        `conf` - 配置参数

    - #### close

          public void close()
                     throws java.lang.Exception

      指定者:
        `close` 在接口中 `java.lang.AutoCloseable`
      抛出:
        `java.lang.Exception`

    - #### name

          public java.lang.String name()

    - #### destroy

          public void destroy(AnyValue conf)

      从接口复制的说明: `Service`
      进程退出时，调用Service销毁
      指定者:
        `destroy` 在接口中 `Service`
      参数:
        `conf` - 配置参数

    - #### exists

          public boolean exists(K key)

      指定者:
        `exists` 在接口中 `CacheSource<K extends java.io.Serializable,V>`

    - #### exists

          public void exists(java.nio.channels.CompletionHandler<java.lang.Boolean,K> handler,
                             @DynAttachment
                             K key)

      指定者:
        `exists` 在接口中 `CacheSource<K extends java.io.Serializable,V>`

    - #### get

          public V get(K key)

      指定者:
        `get` 在接口中 `CacheSource<K extends java.io.Serializable,V>`

    - #### get

          public void get(java.nio.channels.CompletionHandler<V,K> handler,
                          @DynAttachment
                          K key)

      指定者:
        `get` 在接口中 `CacheSource<K extends java.io.Serializable,V>`

    - #### getAndRefresh

          @MultiRun
          public V getAndRefresh(K key)

      指定者:
        `getAndRefresh` 在接口中 `CacheSource<K extends java.io.Serializable,V>`

    - #### getAndRefresh

          public void getAndRefresh(java.nio.channels.CompletionHandler<V,K> handler,
                                    @DynAttachment
                                    K key)

      指定者:
        `getAndRefresh` 在接口中 `CacheSource<K extends java.io.Serializable,V>`

    - #### refresh

          @MultiRun
          public void refresh(K key)

      指定者:
        `refresh` 在接口中 `CacheSource<K extends java.io.Serializable,V>`

    - #### refresh

          public void refresh(java.nio.channels.CompletionHandler<java.lang.Void,K> handler,
                              K key)

      指定者:
        `refresh` 在接口中 `CacheSource<K extends java.io.Serializable,V>`

    - #### set

          @MultiRun
          public void set(K key,
                                     V value)

      指定者:
        `set` 在接口中 `CacheSource<K extends java.io.Serializable,V>`

    - #### set

          public void set(java.nio.channels.CompletionHandler<java.lang.Void,K> handler,
                          @DynAttachment
                          K key,
                          V value)

      指定者:
        `set` 在接口中 `CacheSource<K extends java.io.Serializable,V>`

    - #### set

          @MultiRun
          public void set(int expireSeconds,
                                     K key,
                                     V value)

      指定者:
        `set` 在接口中 `CacheSource<K extends java.io.Serializable,V>`

    - #### set

          public void set(java.nio.channels.CompletionHandler<java.lang.Void,K> handler,
                          int expireSeconds,
                          @DynAttachment
                          K key,
                          V value)

      指定者:
        `set` 在接口中 `CacheSource<K extends java.io.Serializable,V>`

    - #### setExpireSeconds

          @MultiRun
          public void setExpireSeconds(K key,
                                                  int expireSeconds)

      指定者:
        `setExpireSeconds` 在接口中 `CacheSource<K extends java.io.Serializable,V>`

    - #### setExpireSeconds

          public void setExpireSeconds(java.nio.channels.CompletionHandler<java.lang.Void,K> handler,
                                       @DynAttachment
                                       K key,
                                       int expireSeconds)

      指定者:
        `setExpireSeconds` 在接口中 `CacheSource<K extends java.io.Serializable,V>`

    - #### remove

          @MultiRun
          public void remove(K key)

      指定者:
        `remove` 在接口中 `CacheSource<K extends java.io.Serializable,V>`

    - #### remove

          public void remove(java.nio.channels.CompletionHandler<java.lang.Void,K> handler,
                             @DynAttachment
                             K key)

      指定者:
        `remove` 在接口中 `CacheSource<K extends java.io.Serializable,V>`

    - #### getCollection

          public java.util.Collection<V> getCollection(K key)

      指定者:
        `getCollection` 在接口中 `CacheSource<K extends java.io.Serializable,V>`

    - #### getCollection

          public void getCollection(java.nio.channels.CompletionHandler<java.util.Collection<V>,K> handler,
                                    @DynAttachment
                                    K key)

      指定者:
        `getCollection` 在接口中 `CacheSource<K extends java.io.Serializable,V>`

    - #### getCollectionAndRefresh

          public java.util.Collection<V> getCollectionAndRefresh(K key)

      指定者:
        `getCollectionAndRefresh` 在接口中 `CacheSource<K extends java.io.Serializable,V>`

    - #### getCollectionAndRefresh

          public void getCollectionAndRefresh(java.nio.channels.CompletionHandler<java.util.Collection<V>,K> handler,
                                              @DynAttachment
                                              K key)

      指定者:
        `getCollectionAndRefresh` 在接口中 `CacheSource<K extends java.io.Serializable,V>`

    - #### appendListItem

          @MultiRun
          public void appendListItem(K key,
                                                V value)

      指定者:
        `appendListItem` 在接口中 `CacheSource<K extends java.io.Serializable,V>`

    - #### appendListItem

          public void appendListItem(java.nio.channels.CompletionHandler<java.lang.Void,K> handler,
                                     @DynAttachment
                                     K key,
                                     V value)

      指定者:
        `appendListItem` 在接口中 `CacheSource<K extends java.io.Serializable,V>`

    - #### removeListItem

          @MultiRun
          public void removeListItem(K key,
                                                V value)

      指定者:
        `removeListItem` 在接口中 `CacheSource<K extends java.io.Serializable,V>`

    - #### removeListItem

          public void removeListItem(java.nio.channels.CompletionHandler<java.lang.Void,K> handler,
                                     @DynAttachment
                                     K key,
                                     V value)

      指定者:
        `removeListItem` 在接口中 `CacheSource<K extends java.io.Serializable,V>`

    - #### appendSetItem

          @MultiRun
          public void appendSetItem(K key,
                                               V value)

      指定者:
        `appendSetItem` 在接口中 `CacheSource<K extends java.io.Serializable,V>`

    - #### appendSetItem

          public void appendSetItem(java.nio.channels.CompletionHandler<java.lang.Void,K> handler,
                                    @DynAttachment
                                    K key,
                                    V value)

      指定者:
        `appendSetItem` 在接口中 `CacheSource<K extends java.io.Serializable,V>`

    - #### removeSetItem

          @MultiRun
          public void removeSetItem(K key,
                                               V value)

      指定者:
        `removeSetItem` 在接口中 `CacheSource<K extends java.io.Serializable,V>`

    - #### removeSetItem

          public void removeSetItem(java.nio.channels.CompletionHandler<java.lang.Void,K> handler,
                                    @DynAttachment
                                    K key,
                                    V value)

      指定者:
        `removeSetItem` 在接口中 `CacheSource<K extends java.io.Serializable,V>`