Refer to this post in the machine installed Memcached
There are three commonly used in Java memcached:
- Memcached Client for Java
- SpyMemcached
- XMemcached
As used herein, is xmemcached
1. Add a memcached dependent
<!-- https://mvnrepository.com/artifact/com.googlecode.xmemcached/xmemcached --> <dependency> <groupId>com.googlecode.xmemcached</groupId> <artifactId>xmemcached</artifactId> <version>2.4.6</version> </dependency>
2.Memcached deletions search method of packaging prepared
1 package com.example.memcached.service; 2 3 import com.example.memcached.entity.Passenger; 4 import net.rubyeye.xmemcached.MemcachedClient; 5 import net.rubyeye.xmemcached.MemcachedClientBuilder; 6 import net.rubyeye.xmemcached.XMemcachedClient; 7 import net.rubyeye.xmemcached.XMemcachedClientBuilder; 8 import net.rubyeye.xmemcached.exception.MemcachedException; 9 import net.rubyeye.xmemcached.utils.AddrUtil; 10 import net.rubyeye.xmemcached.utils.InetSocketAddressWrapper; 11 import org.springframework.beans.factory.annotation.Autowired; 12 import org.springframework.stereotype.Component; 13 14 import java.io.IOException; 15 import java.net.InetSocketAddress; 16 import java.util.concurrent.TimeoutException; 17 18 public class Memcached { 19 20 protected static String ip = "localhost"; 21 protected static String port = "11211"; 22 /**失效时间(秒)3600*24 一天*/ 23 protected int exptime = 3600 * 24; 24 25 protected static MemcachedClient memcachedClient; 26 27 public static MemcachedClient getMemcachedClient() throws IOException { 28 if (memcachedClient == null) { 29 MemcachedClientBuilder builder = new XMemcachedClientBuilder(AddrUtil.getAddresses(ip + ":" + port)); 30 memcachedClient = builder.build(); 31 } 32 return memcachedClient; 33 } 34 35 /** 36 * 设置缓存 37 * @return 38 */ 39 public boolean set(Passenger passenger) { 40 boolean result = false; 41 try { 42 result = getMemcachedClient().set(passenger.getName(), exptime, passenger); 43 } catch (TimeoutException | InterruptedException | MemcachedException | IOException e) { 44 //ignore 45 } 46 return result; 47 } 48 49 /** 50 * 获取缓存 51 * @return 52 */ 53 public Passenger get(String key){ 54 Passenger passenger = new Passenger(); 55 try { 56 passenger = getMemcachedClient().get(key); 57 if (passenger == null) { 58 passenger = new Passenger(); 59 passenger.setName(key); 60 passenger.setPassword("无值"); 61 this.set(passenger); 62 } 63 } catch (TimeoutException | InterruptedException | MemcachedException | IOException e) { 64 passenger.setPassword("出错了"); 65 } 66 return passenger; 67 } 68 69 /** 70 * 删除缓存 71 * @param key 72 * @return 73 */ 74 public Boolean delete(String key) { 75 boolean result = false; 76 try { 77 result = getMemcachedClient().delete(key); 78 } catch (TimeoutException | InterruptedException | MemcachedException | IOException e) { 79 //ignore 80 } 81 return result; 82 } 83 }
Example 3. Object Class
import org.springframework.data.mongodb.core.mapping.Document; import java.io.Serializable; //必须实现Serializable接口,否则会报Non-serializable object的错 public class Passenger implements Serializable { private String name; private String password; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
4. simple test controller
1 import com.example.memcached.service.Memcached; 2 import com.example.memcached.entity.Passenger; 3 import org.springframework.stereotype.Controller; 4 import org.springframework.web.bind.annotation.PathVariable; 5 import org.springframework.web.bind.annotation.RequestMapping; 6 import org.springframework.web.bind.annotation.RestController; 7 8 @RestController 9 @RequestMapping("/mem") 10 public class MemcachedController { 11 //请求头图方便就这样了 12 @RequestMapping("/insert/{name}/{password}") 13 public String insert(@PathVariable String name,@PathVariable String password) throws Exception { 14 Memcached memcached = new Memcached(); 15 Passenger passenger = new Passenger(); 16 passenger.setName(name); 17 passenger.setPassword(password); 18 Boolean set = memcached.set(passenger); 19 return set.toString(); 20 } 21 22 @RequestMapping("/query/{key}") 23 public String query(@PathVariable String key){ 24 Memcached memcached = new Memcached(); 25 Passenger passenger = memcached.get(key); 26 return passenger.getPassword(); 27 } 28 }
result:
1 add the key, return the result of adding true
2 query just inserted the key-value succeeds, the return helloworld