Java连接Memcached进行CRUD
生活随笔
收集整理的這篇文章主要介紹了
Java连接Memcached进行CRUD
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
參考這篇博文在本機(jī)安裝了Memcached
在 Java 中常用的memcached有三個(gè):
- Memcached Client for Java
- SpyMemcached
- XMemcached
這里使用的是xmemcached
1.添加memcached依賴
<!-- 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增刪查方法封裝編寫
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 /**失效時(shí)間(秒)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 * 設(shè)置緩存 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("無(wú)值"); 61 this.set(passenger); 62 } 63 } catch (TimeoutException | InterruptedException | MemcachedException | IOException e) { 64 passenger.setPassword("出錯(cuò)了"); 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 } View Code3.示例對(duì)象類
import org.springframework.data.mongodb.core.mapping.Document;import java.io.Serializable;//必須實(shí)現(xiàn)Serializable接口,否則會(huì)報(bào)Non-serializable object的錯(cuò) 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.簡(jiǎn)單測(cè)試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 //請(qǐng)求頭圖方便就這樣了 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 }結(jié)果:
1 添加鍵值,返回添加結(jié)果true
2 查詢剛插入的鍵值的值成功,返回helloworld
?
轉(zhuǎn)載于:https://www.cnblogs.com/new-life/p/11117769.html
總結(jié)
以上是生活随笔為你收集整理的Java连接Memcached进行CRUD的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: pyenv 让 python 版本完美切
- 下一篇: Redis的缓存穿透问题和雪崩问题?