Skip to content

Package: MemcachedCache

MemcachedCache

Coverage

1: /*
2: * Copyright (c) 2012, 2017 Oracle and/or its affiliates. All rights reserved.
3: *
4: * This program and the accompanying materials are made available under the
5: * terms of the Eclipse Public License v. 2.0, which is available at
6: * http://www.eclipse.org/legal/epl-2.0.
7: *
8: * This Source Code may also be made available under the following Secondary
9: * Licenses when the conditions for such availability set forth in the
10: * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
11: * version 2 with the GNU Classpath Exception, which is available at
12: * https://www.gnu.org/software/classpath/license.html.
13: *
14: * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15: */
16:
17: package org.glassfish.grizzly.memcached;
18:
19: import java.net.SocketAddress;
20: import java.util.List;
21: import java.util.Map;
22: import java.util.Set;
23:
24: /**
25: * The memcached's cache interface
26: * <p>
27: * This interface extends {@link Commands} and {@link Cache} and has methods related to operation timeout.
28: * Additionally, this supports several bulk operations such as {@link #getMulti} and {@link #setMulti} for dramatic performance improvement.
29: * <p>
30: * By {@link #addServer} and {@link #removeServer}, servers can be added and removed dynamically in this cache.
31: * In other words, the managed server list can be changed in runtime by APIs.
32: *
33: * @author Bongjae Chang
34: */
35: public interface MemcachedCache<K, V> extends Commands<K, V>, Cache<K, V> {
36: // extends basic memcached commands
37:
38: public boolean set(final K key, final V value, final int expirationInSecs, final boolean noReply, final long writeTimeoutInMillis, final long responseTimeoutInMillis);
39:
40: public Map<K, Boolean> setMulti(final Map<K, V> map, final int expirationInSecs);
41:
42: public Map<K, Boolean> setMulti(final Map<K, V> map, final int expirationInSecs, final long writeTimeoutInMillis, final long responseTimeoutInMillis);
43:
44: public boolean add(final K key, final V value, final int expirationInSecs, final boolean noReply, final long writeTimeoutInMillis, final long responseTimeoutInMillis);
45:
46: public boolean replace(final K key, final V value, final int expirationInSecs, final boolean noReply, final long writeTimeoutInMillis, final long responseTimeoutInMillis);
47:
48: public boolean append(final K key, final V value, final boolean noReply, final long writeTimeoutInMillis, final long responseTimeoutInMillis);
49:
50: public boolean prepend(final K key, final V value, final boolean noReply, final long writeTimeoutInMillis, final long responseTimeoutInMillis);
51:
52: public boolean cas(final K key, final V value, final int expirationInSecs, final long cas, final boolean noReply, final long writeTimeoutInMillis, final long responseTimeoutInMillis);
53:
54: public Map<K, Boolean> casMulti(final Map<K, ValueWithCas<V>> map, final int expirationInSecs);
55:
56: public Map<K, Boolean> casMulti(final Map<K, ValueWithCas<V>> map, final int expirationInSecs, final long writeTimeoutInMillis, final long responseTimeoutInMillis);
57:
58: public V get(final K key, final boolean noReply, final long writeTimeoutInMillis, final long responseTimeoutInMillis);
59:
60: public Map<K, V> getMulti(final Set<K> keys);
61:
62: public Map<K, V> getMulti(final Set<K> keys, final long writeTimeoutInMillis, final long responseTimeoutInMillis);
63:
64: public ValueWithKey<K, V> getKey(final K key, final boolean noReply, final long writeTimeoutInMillis, final long responseTimeoutInMillis);
65:
66: public ValueWithCas<V> gets(final K key, final boolean noReply, final long writeTimeoutInMillis, final long responseTimeoutInMillis);
67:
68: public Map<K, ValueWithCas<V>> getsMulti(final Set<K> keys);
69:
70: public Map<K, ValueWithCas<V>> getsMulti(final Set<K> keys, final long writeTimeoutInMillis, final long responseTimeoutInMillis);
71:
72: public V gat(final K key, final int expirationInSecs, final boolean noReply, final long writeTimeoutInMillis, final long responseTimeoutInMillis);
73:
74: /**
75: * delete the item with the given key in memcached
76: *
77: * @param key item's key
78: * @param noReply whether you need to receive a reply or not. true means the quiet operation(no reply).
79: * @param writeTimeoutInMillis write timeout
80: * @param responseTimeoutInMillis response timeout
81: * @return true if the key and the corresponding item is deleted successfully in memcached. false if the deletion is failed(ex. timeout, io failures, ...).
82: * Note) true will be returned when the key doesn't exist in memcached(since v1.3.2)
83: */
84: public boolean delete(final K key, final boolean noReply, final long writeTimeoutInMillis, final long responseTimeoutInMillis);
85:
86: public Map<K, Boolean> deleteMulti(final Set<K> keys);
87:
88: public Map<K, Boolean> deleteMulti(final Set<K> keys, final long writeTimeoutInMillis, final long responseTimeoutInMillis);
89:
90: public long incr(final K key, final long delta, final long initial, final int expirationInSecs, final boolean noReply, final long writeTimeoutInMillis, final long responseTimeoutInMillis);
91:
92: public long decr(final K key, final long delta, final long initial, final int expirationInSecs, final boolean noReply, final long writeTimeoutInMillis, final long responseTimeoutInMillis);
93:
94: public String saslAuth(final SocketAddress address, final String mechanism, final byte[] data, final long writeTimeoutInMillis, final long responseTimeoutInMillis);
95:
96: public String saslStep(final SocketAddress address, final String mechanism, final byte[] data, final long writeTimeoutInMillis, final long responseTimeoutInMillis);
97:
98: public String saslList(final SocketAddress address, final long writeTimeoutInMillis, final long responseTimeoutInMillis);
99:
100: public Map<String, String> stats(final SocketAddress address, final long writeTimeoutInMillis, final long responseTimeoutInMillis);
101:
102: public Map<String, String> statsItems(final SocketAddress address, final String item, final long writeTimeoutInMillis, final long responseTimeoutInMillis);
103:
104: public boolean quit(final SocketAddress address, final boolean noReply, final long writeTimeoutInMillis, final long responseTimeoutInMillis);
105:
106: public boolean flushAll(final SocketAddress address, final int expirationInSecs, final boolean noReply, final long writeTimeoutInMillis, final long responseTimeoutInMillis);
107:
108: public boolean touch(final K key, final int expirationInSecs, final long writeTimeoutInMillis, final long responseTimeoutInMillis);
109:
110: public boolean noop(final SocketAddress address, final long writeTimeoutInMillis, final long responseTimeoutInMillis);
111:
112: public boolean verbosity(final SocketAddress address, final int verbosity, final long writeTimeoutInMillis, final long responseTimeoutInMillis);
113:
114: public String version(final SocketAddress address, final long writeTimeoutInMillis, final long responseTimeoutInMillis);
115:
116:
117: /**
118: * Add a specific server in this cache
119: *
120: * @param serverAddress a specific server's {@link SocketAddress} to be added
121: * @return true if the given {@code serverAddress} is added successfully
122: */
123: public boolean addServer(final SocketAddress serverAddress);
124:
125: /**
126: * Remove the given server in this cache
127: *
128: * @param serverAddress the specific server's {@link SocketAddress} to be removed in this cache
129: */
130: public void removeServer(final SocketAddress serverAddress);
131:
132: /**
133: * Check if this cache contains the given server
134: *
135: * @param serverAddress the specific server's {@link SocketAddress} to be checked
136: * @return true if this cache already contains the given {@code serverAddress}
137: */
138: public boolean isInServerList(final SocketAddress serverAddress);
139:
140: /**
141: * Get current server list
142: *
143: * @return current server list or empty list if there are no alive servers
144: */
145: public List<SocketAddress> getCurrentServerList();
146: }