{"id":2041,"date":"2023-04-01T20:38:43","date_gmt":"2023-04-01T12:38:43","guid":{"rendered":"https:\/\/www.appblog.cn\/?p=2041"},"modified":"2023-04-07T06:11:44","modified_gmt":"2023-04-06T22:11:44","slug":"spring-boot-integrated-memcached","status":"publish","type":"post","link":"https:\/\/www.appblog.cn\/index.php\/2023\/04\/01\/spring-boot-integrated-memcached\/","title":{"rendered":"Spring Boot\u96c6\u6210Memcached"},"content":{"rendered":"<h2>Memcached \u4ecb\u7ecd<\/h2>\n<p><code>Memcached<\/code>\u662f\u4e00\u4e2a\u9ad8\u6027\u80fd\u7684\u5206\u5e03\u5f0f\u5185\u5b58\u5bf9\u8c61\u7f13\u5b58\u7cfb\u7edf\uff0c\u7528\u4e8e\u52a8\u6001Web\u5e94\u7528\u4ee5\u51cf\u8f7b\u6570\u636e\u5e93\u8d1f\u8f7d\u3002\u5b83\u901a\u8fc7\u5728\u5185\u5b58\u4e2d\u7f13\u5b58\u6570\u636e\u548c\u5bf9\u8c61\u6765\u51cf\u5c11\u8bfb\u53d6\u6570\u636e\u5e93\u7684\u6b21\u6570\uff0c\u4ece\u800c\u63d0\u9ad8\u52a8\u6001\u3001\u6570\u636e\u5e93\u9a71\u52a8\u7f51\u7ad9\u7684\u901f\u5ea6\u3002Memcached\u57fa\u4e8e\u4e00\u4e2a\u5b58\u50a8\u952e\/\u503c\u5bf9\u7684hashmap\u3002\u5176\u5b88\u62a4\u8fdb\u7a0b\uff08daemon \uff09\u662f\u7528C\u5199\u7684\uff0c\u4f46\u662f\u5ba2\u6237\u7aef\u53ef\u4ee5\u7528\u4efb\u4f55\u8bed\u8a00\u6765\u7f16\u5199\uff0c\u5e76\u901a\u8fc7memcached\u534f\u8bae\u4e0e\u5b88\u62a4\u8fdb\u7a0b\u901a\u4fe1\u3002<\/p>\n<p><!-- more --><\/p>\n<p>\u56e0\u4e3a Spring Boot \u6ca1\u6709\u9488\u5bf9 Memcached \u63d0\u4f9b\u5bf9\u5e94\u7684\u7ec4\u4ef6\u5305\uff0c\u56e0\u6b64\u9700\u8981\u6211\u4eec\u81ea\u5df1\u6765\u96c6\u6210\u3002\u5b98\u65b9\u63a8\u51fa\u7684 Java \u5ba2\u6237\u7aef<code>Spymemcached<\/code>\u662f\u4e00\u4e2a\u6bd4\u8f83\u597d\u7684\u9009\u62e9\u4e4b\u4e00\u3002<\/p>\n<p><code>Spymemcached<\/code>\u662f\u4e00\u4e2a\u91c7\u7528 Java \u5f00\u53d1\u7684\u5f02\u6b65\u3001\u5355\u7ebf\u7a0b\u7684 Memcached \u5ba2\u6237\u7aef\uff0c\u4f7f\u7528 NIO \u5b9e\u73b0\u3002<code>Spymemcached<\/code>\u662f<code>Memcached<\/code>\u7684\u4e00\u4e2a\u6d41\u884c\u7684 Java client \u5e93\uff0c\u6027\u80fd\u8868\u73b0\u51fa\u8272\uff0c\u5e7f\u6cdb\u5e94\u7528\u4e8e<code>Java + Memcached<\/code>\u9879\u76ee\u4e2d\u3002<\/p>\n<h2>\u4f9d\u8d56\u914d\u7f6e<\/h2>\n<h3>\u6dfb\u52a0\u4f9d\u8d56<\/h3>\n<p>pom.xml \u5305\u4e2d\u6dfb\u52a0<code>spymemcached<\/code>\u7684\u5f15\u7528<\/p>\n<pre><code class=\"language-xml\">&lt;dependency&gt;\n  &lt;groupId&gt;net.spy&lt;\/groupId&gt;\n  &lt;artifactId&gt;spymemcached&lt;\/artifactId&gt;\n&lt;\/dependency&gt;<\/code><\/pre>\n<p>\u6dfb\u52a0\u914d\u7f6e<\/p>\n<pre><code>memcache.ip=192.168.0.161\nmemcache.port=11211<\/code><\/pre>\n<p>\u5206\u522b\u914d\u7f6e memcache \u7684 Ip\u5730\u5740\u548c\u7aef\u53e3<\/p>\n<h3>\u8bbe\u7f6e\u914d\u7f6e\u5bf9\u8c61<\/h3>\n<p>\u521b\u5efa<code>MemcacheSource<\/code>\u63a5\u6536\u914d\u7f6e\u4fe1\u606f<\/p>\n<pre><code class=\"language-java\">@Component\n@ConfigurationProperties(prefix = &quot;memcache&quot;)\npublic class MemcacheSource {\n\n    private String ip;\n\n    private int port;\n\n    public String getIp() {\n        return ip;\n    }\n\n    public void setIp(String ip) {\n        this.ip = ip;\n    }\n\n    public int getPort() {\n        return port;\n    }\n\n    public void setPort(int port) {\n        this.port = port;\n    }\n}<\/code><\/pre>\n<p><code>@ConfigurationProperties(prefix = &quot;memcache&quot;)<\/code>\u7684\u610f\u601d\u4f1a\u4ee5 memcache.* \u4e3a\u5f00\u901a\u5c06\u5bf9\u5e94\u7684\u914d\u7f6e\u6587\u4ef6\u52a0\u8f7d\u5230\u5c5e\u6027\u4e2d<\/p>\n<h2>\u542f\u52a8\u521d\u59cb\u5316 MemcachedClient<\/h2>\n<p>\u5229\u7528<code>CommandLineRunner<\/code>\u5728\u9879\u76ee\u542f\u52a8\u7684\u65f6\u5019\u914d\u7f6e\u597d<code>MemcachedClient<\/code><\/p>\n<pre><code class=\"language-java\">@Component\npublic class MemcachedRunner implements CommandLineRunner {\n    protected Logger logger =  LoggerFactory.getLogger(this.getClass());\n\n    @Resource\n    private  MemcacheSource memcacheSource;\n\n    private MemcachedClient client = null;\n\n    @Override\n    public void run(String... args) throws Exception {\n        try {\n            client = new MemcachedClient(new InetSocketAddress(memcacheSource.getIp(), memcacheSource.getPort()));\n        } catch (IOException e) {\n            logger.error(&quot;inint MemcachedClient failed &quot;, e);\n        }\n    }\n\n    public MemcachedClient getClient() {\n        return client;\n    }\n}<\/code><\/pre>\n<p>\u6d4b\u8bd5\u4f7f\u7528<\/p>\n<pre><code class=\"language-java\">@RunWith(SpringRunner.class)\n@SpringBootTest\npublic class RepositoryTests {\n\n  @Resource\n    private MemcachedRunner memcachedRunner;\n\n  @Test\n  public void testSetGet() {\n    MemcachedClient memcachedClient = memcachedRunner.getClient();\n    memcachedClient.set(&quot;test&quot;, 1000, &quot;AppBlog.CN&quot;);\n    System.out.println(memcachedClient.get(&quot;test&quot;).toString());\n  }\n}<\/code><\/pre>\n<p>\u4f7f\u7528\u4e2d\u5148\u6d4b\u8bd5\u63d2\u5165\u4e00\u4e2akey\u4e3a<code>test<\/code>\uff0c1000\u4e3a\u8fc7\u671f\u65f6\u95f4\uff0c\u5355\u4f4d\u4e3a\u6beb\u79d2\uff0c\u6700\u540e\u7684<code>AppBlog.CN<\/code>\u4e3akey\u5bf9\u5e94\u7684\u503c<\/p>\n<p>\u6267\u884c\u6d4b\u8bd5\u7528\u4f8b testSetGet \uff0c\u63a7\u5236\u53f0\u8f93\u51fa\u5185\u5bb9\uff1a<code>AppBlog.CN<\/code>\uff0c\u8868\u660e\u6d4b\u8bd5\u6210\u529f\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Memcached \u4ecb\u7ecd Memcached\u662f\u4e00\u4e2a\u9ad8\u6027\u80fd\u7684\u5206\u5e03\u5f0f\u5185\u5b58\u5bf9\u8c61\u7f13\u5b58\u7cfb\u7edf\uff0c\u7528\u4e8e\u52a8\u6001Web\u5e94\u7528\u4ee5\u51cf\u8f7b\u6570\u636e [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[41],"tags":[515],"class_list":["post-2041","post","type-post","status-publish","format-standard","hentry","category-spring-boot","tag-memcached"],"_links":{"self":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts\/2041","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/comments?post=2041"}],"version-history":[{"count":0,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts\/2041\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/media?parent=2041"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/categories?post=2041"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/tags?post=2041"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}