{"id":5873,"date":"2024-04-16T00:58:49","date_gmt":"2024-04-15T16:58:49","guid":{"rendered":"http:\/\/zyg.luchers.cn\/?p=5873"},"modified":"2024-04-16T00:58:49","modified_gmt":"2024-04-15T16:58:49","slug":"%e7%ac%ac%e5%8d%81%e4%ba%8c%e7%ab%a0%e3%80%81redis%e6%95%b4%e5%90%88springboot","status":"publish","type":"post","link":"http:\/\/zyg.luchers.cn\/index.php\/2024\/04\/16\/%e7%ac%ac%e5%8d%81%e4%ba%8c%e7%ab%a0%e3%80%81redis%e6%95%b4%e5%90%88springboot\/","title":{"rendered":"\u7b2c\u5341\u4e8c\u7ae0\u3001redis\u6574\u5408springboot"},"content":{"rendered":"<h1>\u7b2c\u5341\u4e8c\u7ae0\u3001redis\u6574\u5408springboot<\/h1>\n<h2>1\u3001\u603b\u4f53\u6982\u8ff0<\/h2>\n<p>1\u3001\u6709\u4e09\u4e2ajar\u5305\u76ee\u524d\u5e02\u9762\u5e38\u7528<\/p>\n<p>2\u3001jedis\uff1a\u7ecf\u5178<\/p>\n<p>3\u3001lettuce\uff1a\uff08\u751f\u83dc\uff09\u4f18\u79c0\u7684\u4ea7\u7269\uff0c\u4f46\u662f\u88abRedisTemplate\u6574\u5408\u4e86<\/p>\n<p>4\u3001RedisTemplate\uff1aSpring\u5bb6\u65cf\u6574\u5408\u7684\u4e00\u4e2aRedis\u8fde\u63a5\u5de5\u5177<\/p>\n<p>5\u3001\u53ef\u4ee5\u7406\u89e3\u4e3ajdbc\u8fde\u63a5\u6570\u636e\u5e93\u4e00\u6837\u3002\u4ee5\u4e0a3 \u4e2a\u662f\u8fde\u63a5redis\u7684<\/p>\n<h2>2\u3001\u672c\u5730java\u8fde\u63a5redis\u5e38\u89c1\u95ee\u9898<\/h2>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/zyg.luchers.cn\/wp-content\/uploads\/2024\/04\/image-20240406132526166.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"http:\/\/zyg.luchers.cn\/wp-content\/uploads\/2024\/04\/image-20240406132526166.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20240406132526166\" \/><\/div><\/p>\n<h2>3\u3001springboot\u96c6\u6210Jedis<\/h2>\n<h3>1\u3001\u662f\u4ec0\u4e48<\/h3>\n<p>1\u3001jedis Client\u662fRedis\u5b98\u7f51\u63a8\u8350\u7684\u4e00\u4e2a\u9762\u5411java\u7684\u5ba2\u6237\u7aef\uff0c\u5bf9Redis\u547d\u4ee4\u8fdb\u884c\u4e86\u5c01\u88c5\u7684API<\/p>\n<h3>2\u3001\u6b65\u9aa4<\/h3>\n<h4>1\u3001\u5efamodule\u6a21\u5757<\/h4>\n<p>1\u3001\u5c31\u662f\u5efa\u9879\u76ee\uff0c\u4e00\u5b9a\u8981Maven\u7684\u9879\u76ee\uff0c\u4e0d\u7136\u96be\u53d7\u6b7b<\/p>\n<h4>2\u3001\u6539pom\u6587\u4ef6<\/h4>\n<p>1\u3001\u6539pom\u6587\u4ef6\u5f15\u5165\u5305<\/p>\n<p>2\u3001jedis\u5305<\/p>\n<pre><code>&lt;!--jedis--&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;redis.clients&lt;\/groupId&gt;\n            &lt;artifactId&gt;jedis&lt;\/artifactId&gt;\n            &lt;version&gt;4.3.1&lt;\/version&gt;\n        &lt;\/dependency&gt;<\/code><\/pre>\n<p>3\u3001\u672c\u6848\u4f8b\u7684\u6240\u6709pom\u6587\u4ef6<\/p>\n<pre><code>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;\n&lt;project xmlns=&quot;http:\/\/maven.apache.org\/POM\/4.0.0&quot;\n         xmlns:xsi=&quot;http:\/\/www.w3.org\/2001\/XMLSchema-instance&quot;\n         xsi:schemaLocation=&quot;http:\/\/maven.apache.org\/POM\/4.0.0 http:\/\/maven.apache.org\/xsd\/maven-4.0.0.xsd&quot;&gt;\n    &lt;modelVersion&gt;4.0.0&lt;\/modelVersion&gt;\n\n    &lt;groupId&gt;com.atguigu.redis7&lt;\/groupId&gt;\n    &lt;artifactId&gt;redis7_study&lt;\/artifactId&gt;\n    &lt;version&gt;1.0-SNAPSHOT&lt;\/version&gt;\n\n    &lt;parent&gt;\n        &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n        &lt;artifactId&gt;spring-boot-starter-parent&lt;\/artifactId&gt;\n        &lt;version&gt;2.6.10&lt;\/version&gt;\n        &lt;relativePath\/&gt;\n    &lt;\/parent&gt;\n\n    &lt;properties&gt;\n        &lt;project.build.sourceEncoding&gt;UTF-8&lt;\/project.build.sourceEncoding&gt;\n        &lt;maven.compiler.source&gt;1.8&lt;\/maven.compiler.source&gt;\n        &lt;maven.compiler.target&gt;1.8&lt;\/maven.compiler.target&gt;\n        &lt;junit.version&gt;4.12&lt;\/junit.version&gt;\n        &lt;log4j.version&gt;1.2.17&lt;\/log4j.version&gt;\n        &lt;lombok.version&gt;1.16.18&lt;\/lombok.version&gt;\n    &lt;\/properties&gt;\n\n    &lt;dependencies&gt;\n        &lt;!--SpringBoot\u901a\u7528\u4f9d\u8d56\u6a21\u5757--&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n            &lt;artifactId&gt;spring-boot-starter-web&lt;\/artifactId&gt;\n        &lt;\/dependency&gt;\n        &lt;!--jedis--&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;redis.clients&lt;\/groupId&gt;\n            &lt;artifactId&gt;jedis&lt;\/artifactId&gt;\n            &lt;version&gt;4.3.1&lt;\/version&gt;\n        &lt;\/dependency&gt;\n        &lt;!--\u901a\u7528\u57fa\u7840\u914d\u7f6e--&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;junit&lt;\/groupId&gt;\n            &lt;artifactId&gt;junit&lt;\/artifactId&gt;\n            &lt;version&gt;${junit.version}&lt;\/version&gt;\n        &lt;\/dependency&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n            &lt;artifactId&gt;spring-boot-starter-test&lt;\/artifactId&gt;\n            &lt;scope&gt;test&lt;\/scope&gt;\n        &lt;\/dependency&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;log4j&lt;\/groupId&gt;\n            &lt;artifactId&gt;log4j&lt;\/artifactId&gt;\n            &lt;version&gt;${log4j.version}&lt;\/version&gt;\n        &lt;\/dependency&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;org.projectlombok&lt;\/groupId&gt;\n            &lt;artifactId&gt;lombok&lt;\/artifactId&gt;\n            &lt;version&gt;${lombok.version}&lt;\/version&gt;\n            &lt;optional&gt;true&lt;\/optional&gt;\n        &lt;\/dependency&gt;\n    &lt;\/dependencies&gt;\n\n    &lt;build&gt;\n        &lt;plugins&gt;\n            &lt;plugin&gt;\n                &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n                &lt;artifactId&gt;spring-boot-maven-plugin&lt;\/artifactId&gt;\n            &lt;\/plugin&gt;\n        &lt;\/plugins&gt;\n    &lt;\/build&gt;\n\n&lt;\/project&gt;<\/code><\/pre>\n<h4>3\u3001\u7f16\u5199yaml\u6587\u4ef6\u914d\u7f6e\u6587\u4ef6<\/h4>\n<p>1\u3001\u5982\u4e0b<\/p>\n<pre><code>server.port=7777 #\u7aef\u53e3\u53f7\n\nspring.application.name=redis7_study #\u6a21\u5757\u540d\u5b57<\/code><\/pre>\n<h4>4\u3001\u7f16\u5199\u4e3b\u542f\u52a8\u7c7b<\/h4>\n<p>1\u3001\u5982\u4e0b<\/p>\n<pre><code>package com.atguigu.redis7;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\n\n\/**\n * @auther zzyy\n * @create 2022-11-17 16:36\n *\/\n@SpringBootApplication\npublic class Redis7Study7777\n{\n    public static void main(String[] args)\n    {\n        SpringApplication.run(Redis7Study7777.class,args);\n    }\n}<\/code><\/pre>\n<h4>5\u3001\u7f16\u5199\u4e1a\u52a1<\/h4>\n<p>1\u3001\u4e94\u5927\u57fa\u672c\u6570\u636e\u7c7b\u578b<\/p>\n<p>2\u3001\u5982\u4e0b<\/p>\n<pre><code class=\"language-java\">package com.atguigu.redis7.demo;\n\nimport redis.clients.jedis.Jedis;\n\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\n\npublic class JedisDemo {\n    public static void main(String[] args) {\n\/\/        \u901a\u8fc7connect\u8fde\u63a5\u6307\u5b9a\u7684ip\u548c\u7aef\u53e3\u53f7\n        Jedis jedis = new Jedis(&quot;192.168.171.129&quot;,6379);\n\n\/\/        \u6307\u5b9a\u8bbf\u95ee\u670d\u52a1\u5668\u7684\u5bc6\u7801\n        jedis.auth(&quot;111111&quot;);\n\n        System.out.println(jedis.ping());\n\n\/\/        keys\n        Set&lt;String&gt; keys = jedis.keys(&quot;*&quot;);\n        System.out.println(&quot;keys = &quot; + keys);\n\n\/\/        list\n        jedis.hset(&quot;hash1&quot;,&quot;username&quot;,&quot;lisi&quot;);\n        System.out.println(jedis.hget(&quot;hash1&quot;,&quot;username&quot;));\n        Map&lt;String ,String &gt; map = new HashMap&lt;&gt;();\n        map.put(&quot;password&quot;,&quot;123456&quot;);\n        map.put(&quot;age&quot;,&quot;20&quot;);\n        map.put(&quot;sex&quot;,&quot;\u7537&quot;);\n        jedis.hset(&quot;hash1&quot;,map);\n\n         List&lt;String &gt; result = jedis.hmget(&quot;hash1&quot;,&quot;password&quot;,&quot;age&quot;,&quot;sex&quot;);\n         for (String res :result){\n             System.out.println(res);\n         }\n\n         System.out.println(jedis.hgetAll(&quot;hash1&quot;));\n\n\/\/         zset\n        jedis.zadd(&quot;zset01&quot;,60d,&quot;v1&quot;);\n        jedis.zadd(&quot;zset01&quot;,70d,&quot;v2&quot;);\n        jedis.zadd(&quot;zset01&quot;,80d,&quot;v3&quot;);\n        jedis.zadd(&quot;zset01&quot;,90d,&quot;v4&quot;);\n\n        List&lt;String &gt; zset01 = jedis.zrange(&quot;zset01&quot;,0,-1);\n        zset01.forEach(System.out::println);\n    }\n}\n<\/code><\/pre>\n<h2>4\u3001springboot\u96c6\u6210lettuce<\/h2>\n<h3>1\u3001\u662f\u4ec0\u4e48\uff1f<\/h3>\n<p>1\u3001<strong>Lettuce\u662f\u4e00\u4e2aRedis\u7684Java\u9a71\u52a8\u5305<\/strong><\/p>\n<h3>2\u3001lettuce\u6bd4jedis\u6709\u4ec0\u4e48\u4f18\u52bf<\/h3>\n<p>1\u3001springboot2.0\u9ed8\u8ba4\u7528lettuce<\/p>\n<p>2\u3001jedis\u7ebf\u7a0b\u4e0d\u5b89\u5168\uff08\u8981\u624b\u52a8\u5173\u95ed\u548c\u5927\u91cf\u521b\u5efa\u7ebf\u7a0b\uff09<\/p>\n<p>3\u3001lettuce\u5e95\u5c42\u7528Netty\uff0c\u4fdd\u8bc1\u53ea\u521b\u5efa\u4e00\u4e2a\u8fde\u63a5\u7ebf\u7a0b\uff0c\u6240\u4ee5\u7ebf\u7a0b\u5b89\u5168<\/p>\n<h3>3\u3001\u6b65\u9aa4<\/h3>\n<h4>1\u3001\u6dfb\u52a0pom\u6587\u4ef6<\/h4>\n<p>1\u3001lettuce\u7684jar\u5305<\/p>\n<pre><code>&lt;!--lettuce--&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;io.lettuce&lt;\/groupId&gt;\n            &lt;artifactId&gt;lettuce-core&lt;\/artifactId&gt;\n            &lt;version&gt;6.2.1.RELEASE&lt;\/version&gt;\n        &lt;\/dependency&gt;<\/code><\/pre>\n<p>2\u3001\u672c\u4f8b\u4e2d\u6240\u7528\u7684\u6240\u6709jar\u5305<\/p>\n<pre><code>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;\n&lt;project xmlns=&quot;http:\/\/maven.apache.org\/POM\/4.0.0&quot;\n         xmlns:xsi=&quot;http:\/\/www.w3.org\/2001\/XMLSchema-instance&quot;\n         xsi:schemaLocation=&quot;http:\/\/maven.apache.org\/POM\/4.0.0 http:\/\/maven.apache.org\/xsd\/maven-4.0.0.xsd&quot;&gt;\n    &lt;modelVersion&gt;4.0.0&lt;\/modelVersion&gt;\n\n    &lt;groupId&gt;com.atguigu.redis7&lt;\/groupId&gt;\n    &lt;artifactId&gt;redis7_study&lt;\/artifactId&gt;\n    &lt;version&gt;1.0-SNAPSHOT&lt;\/version&gt;\n\n    &lt;parent&gt;\n        &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n        &lt;artifactId&gt;spring-boot-starter-parent&lt;\/artifactId&gt;\n        &lt;version&gt;2.6.10&lt;\/version&gt;\n        &lt;relativePath\/&gt;\n    &lt;\/parent&gt;\n\n    &lt;properties&gt;\n        &lt;project.build.sourceEncoding&gt;UTF-8&lt;\/project.build.sourceEncoding&gt;\n        &lt;maven.compiler.source&gt;1.8&lt;\/maven.compiler.source&gt;\n        &lt;maven.compiler.target&gt;1.8&lt;\/maven.compiler.target&gt;\n        &lt;junit.version&gt;4.12&lt;\/junit.version&gt;\n        &lt;log4j.version&gt;1.2.17&lt;\/log4j.version&gt;\n        &lt;lombok.version&gt;1.16.18&lt;\/lombok.version&gt;\n    &lt;\/properties&gt;\n\n    &lt;dependencies&gt;\n        &lt;!--SpringBoot\u901a\u7528\u4f9d\u8d56\u6a21\u5757--&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n            &lt;artifactId&gt;spring-boot-starter-web&lt;\/artifactId&gt;\n        &lt;\/dependency&gt;\n        &lt;!--jedis--&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;redis.clients&lt;\/groupId&gt;\n            &lt;artifactId&gt;jedis&lt;\/artifactId&gt;\n            &lt;version&gt;4.3.1&lt;\/version&gt;\n        &lt;\/dependency&gt;\n        &lt;!--lettuce--&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;io.lettuce&lt;\/groupId&gt;\n            &lt;artifactId&gt;lettuce-core&lt;\/artifactId&gt;\n            &lt;version&gt;6.2.1.RELEASE&lt;\/version&gt;\n        &lt;\/dependency&gt;\n        &lt;!--\u901a\u7528\u57fa\u7840\u914d\u7f6e--&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;junit&lt;\/groupId&gt;\n            &lt;artifactId&gt;junit&lt;\/artifactId&gt;\n            &lt;version&gt;${junit.version}&lt;\/version&gt;\n        &lt;\/dependency&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n            &lt;artifactId&gt;spring-boot-starter-test&lt;\/artifactId&gt;\n            &lt;scope&gt;test&lt;\/scope&gt;\n        &lt;\/dependency&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;log4j&lt;\/groupId&gt;\n            &lt;artifactId&gt;log4j&lt;\/artifactId&gt;\n            &lt;version&gt;${log4j.version}&lt;\/version&gt;\n        &lt;\/dependency&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;org.projectlombok&lt;\/groupId&gt;\n            &lt;artifactId&gt;lombok&lt;\/artifactId&gt;\n            &lt;version&gt;${lombok.version}&lt;\/version&gt;\n            &lt;optional&gt;true&lt;\/optional&gt;\n        &lt;\/dependency&gt;\n    &lt;\/dependencies&gt;\n\n    &lt;build&gt;\n        &lt;plugins&gt;\n            &lt;plugin&gt;\n                &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n                &lt;artifactId&gt;spring-boot-maven-plugin&lt;\/artifactId&gt;\n            &lt;\/plugin&gt;\n        &lt;\/plugins&gt;\n    &lt;\/build&gt;\n\n&lt;\/project&gt;<\/code><\/pre>\n<h4>2\u3001\u914d\u7f6e\u6587\u4ef6<\/h4>\n<p>1\u3001\u914d\u7f6e\u6587\u4ef6\u548c\u6574\u5408jedis\u4e00\u6837<\/p>\n<h4>3\u3001\u542f\u52a8\u7c7b<\/h4>\n<p>1\u3001\u542f\u52a8\u7c7b\u4e5f\u548c\u6574\u5408jedis\u4e00\u6837<\/p>\n<h4>4\u3001\u7f16\u5199\u4e1a\u52a1<\/h4>\n<p>1\u3001\u7528lettuce\u5b8c\u6210\u57fa\u672c\u76845\u4e2d\u6570\u636e\u7c7b\u578b<\/p>\n<pre><code class=\"language-java\">package com.atguigu.redis7.demo;\n\nimport io.lettuce.core.RedisClient;\nimport io.lettuce.core.RedisURI;\nimport io.lettuce.core.SortArgs;\nimport io.lettuce.core.api.StatefulRedisConnection;\nimport io.lettuce.core.api.sync.RedisCommands;\n\nimport java.util.*;\n\npublic class lettuceDemo {\n    public static void main(String[] args) {\n\/\/        1\u3001\u4f7f\u7528\u6784\u5efa\u5668redisURI.builder\n        RedisURI uri = RedisURI.Builder\n                .redis(&quot;192.168.171.129&quot;)\n                .withPort(6379)\n                .withAuthentication(&quot;default&quot;,&quot;111111&quot;)\n                .build();\n\/\/        2\u3001\u521b\u5efa\u8fde\u63a5\u7684\u5ba2\u6237\u7aef\n        RedisClient client = RedisClient.create(uri);\n\/\/        3\u3001\u83b7\u53d6\u8fde\u63a5\n        StatefulRedisConnection conn = client.connect();\n\/\/        \u64cd\u4f5c\u547d\u4ee4\n        RedisCommands&lt;String ,String &gt; commands = conn.sync();\n\/\/        \u7f16\u5199\u4e1a\u52a1\u903b\u8f91\n        \/\/keys\n        List&lt;String &gt; list = commands.keys(&quot;*&quot;);\n        for (String  s :list){\n            System.out.println(s);\n        }\n        \/\/string\n        System.out.println(&quot;String=====================&quot;);\n        commands.set(&quot;name&quot;,&quot;zhangsan&quot;);\n        commands.set(&quot;age&quot;,&quot;18&quot;);\n        String name = commands.get(&quot;name&quot;);\n        System.out.println(&quot;name = &quot; + name);\n        String age = commands.get(&quot;age&quot;);\n        System.out.println(&quot;age = &quot; + age);\n        \/\/list\n        commands.lpush(&quot;mylist2&quot;,&quot;v1&quot;,&quot;v2&quot;,&quot;v3&quot;);\n        List&lt;String &gt; list2 = commands.lrange(&quot;mylist2&quot;,0,-1);\n        for(String s: list2){\n            System.out.println(&quot;sList ===== &quot; + s);\n        }\n        \/\/set\n        commands.sadd(&quot;myset2&quot;,&quot;v11&quot;,&quot;v22&quot;,&quot;v33&quot;);\n        Set&lt;String&gt; set = commands.smembers(&quot;myset2&quot;);\n        for(String s: set){\n            System.out.println(&quot;sSet = &quot; + s);\n        }\n        \/\/hash\n        Map&lt;String ,String &gt; map = new HashMap&lt;&gt;();\n        map.put(&quot;k1&quot;,&quot;v1hash&quot;);\n        map.put(&quot;k2&quot;,&quot;v2hash&quot;);\n        map.put(&quot;k3&quot;,&quot;v3hash&quot;);\n        commands.hset(&quot;myhash2&quot;,map);\n        Map&lt;String,String&gt; resmap = commands.hgetall(&quot;myhash2&quot;);\n        for(String  k:resmap.keySet()){\n            System.out.println(&quot;k = &quot; + k+&quot;v==&quot;+resmap.get(k));\n        }\n        \/\/zset\n        commands.zadd(&quot;myzset2&quot;,1.0,&quot;v1zset&quot;,2.0,&quot;v2zset&quot;,3.0,&quot;v3zset&quot;);\n        List&lt;String &gt; list3 = commands.zrange(&quot;myzset2&quot;,0,-1);\n        for(String s: list3){\n            System.out.println(&quot;sZset ==== &quot; + s);\n        }\n        \/\/sort\n        SortArgs sortArgs = new SortArgs();\n        sortArgs.alpha();\n        sortArgs.desc();\n\n        List&lt;String &gt; list4 = commands.sort(&quot;mylist2&quot;,sortArgs);\n        for(String s: list4){\n            System.out.println(&quot;sort ==== &quot; + s);\n        }\n\/\/        4\u3001\u5173\u95ed\u8fde\u63a5\n        conn.close();\n        client.shutdown();\n\n    }\n}<\/code><\/pre>\n<h2>5\u3001springboot\u96c6\u6210RedisTemplate<\/h2>\n<h3>1\u3001\u8fde\u63a5\u5355\u673a\u6b65\u9aa4<\/h3>\n<h4>1\u3001\u5efa\u6a21\u5757<\/h4>\n<p>1\u3001\u8fd9\u91cc\u4ee5redis7_study\u4e3a\u4f8b<\/p>\n<h4>2\u3001\u6539pom\u6587\u4ef6<\/h4>\n<p>1\u3001\u8fd9\u91cc\u53ea\u6709\u7b2c\u4e00\u4e2a\u662f\u5fc5\u987b\uff0c\u540e\u9762\u4e24\u4e2a\u4e0d\u662f\u5fc5\u987b<\/p>\n<pre><code>&lt;!--SpringBoot\u4e0eRedis\u6574\u5408\u4f9d\u8d56--&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n            &lt;artifactId&gt;spring-boot-starter-data-redis&lt;\/artifactId&gt;\n        &lt;\/dependency&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;org.apache.commons&lt;\/groupId&gt;\n            &lt;artifactId&gt;commons-pool2&lt;\/artifactId&gt;\n        &lt;\/dependency&gt;\n\n        &lt;!--swagger2--&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;io.springfox&lt;\/groupId&gt;\n            &lt;artifactId&gt;springfox-swagger2&lt;\/artifactId&gt;\n            &lt;version&gt;2.9.2&lt;\/version&gt;\n        &lt;\/dependency&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;io.springfox&lt;\/groupId&gt;\n            &lt;artifactId&gt;springfox-swagger-ui&lt;\/artifactId&gt;\n            &lt;version&gt;2.9.2&lt;\/version&gt;\n        &lt;\/dependency&gt;<\/code><\/pre>\n<p>2\u3001\u672c\u4f8b\u4e2d\u5b8c\u6574\u7684pom\u6587\u4ef6<\/p>\n<pre><code>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;\n&lt;project xmlns=&quot;http:\/\/maven.apache.org\/POM\/4.0.0&quot;\n         xmlns:xsi=&quot;http:\/\/www.w3.org\/2001\/XMLSchema-instance&quot;\n         xsi:schemaLocation=&quot;http:\/\/maven.apache.org\/POM\/4.0.0 http:\/\/maven.apache.org\/xsd\/maven-4.0.0.xsd&quot;&gt;\n    &lt;modelVersion&gt;4.0.0&lt;\/modelVersion&gt;\n\n    &lt;groupId&gt;com.atguigu.redis7&lt;\/groupId&gt;\n    &lt;artifactId&gt;redis7_study&lt;\/artifactId&gt;\n    &lt;version&gt;1.0-SNAPSHOT&lt;\/version&gt;\n\n    &lt;parent&gt;\n        &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n        &lt;artifactId&gt;spring-boot-starter-parent&lt;\/artifactId&gt;\n        &lt;version&gt;2.6.10&lt;\/version&gt;\n        &lt;relativePath\/&gt;\n    &lt;\/parent&gt;\n\n    &lt;properties&gt;\n        &lt;project.build.sourceEncoding&gt;UTF-8&lt;\/project.build.sourceEncoding&gt;\n        &lt;maven.compiler.source&gt;1.8&lt;\/maven.compiler.source&gt;\n        &lt;maven.compiler.target&gt;1.8&lt;\/maven.compiler.target&gt;\n        &lt;junit.version&gt;4.12&lt;\/junit.version&gt;\n        &lt;log4j.version&gt;1.2.17&lt;\/log4j.version&gt;\n        &lt;lombok.version&gt;1.16.18&lt;\/lombok.version&gt;\n    &lt;\/properties&gt;\n\n    &lt;dependencies&gt;\n        &lt;!--SpringBoot\u901a\u7528\u4f9d\u8d56\u6a21\u5757--&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n            &lt;artifactId&gt;spring-boot-starter-web&lt;\/artifactId&gt;\n        &lt;\/dependency&gt;\n        &lt;!--jedis--&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;redis.clients&lt;\/groupId&gt;\n            &lt;artifactId&gt;jedis&lt;\/artifactId&gt;\n            &lt;version&gt;4.3.1&lt;\/version&gt;\n        &lt;\/dependency&gt;\n        &lt;!--lettuce--&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;io.lettuce&lt;\/groupId&gt;\n            &lt;artifactId&gt;lettuce-core&lt;\/artifactId&gt;\n            &lt;version&gt;6.2.1.RELEASE&lt;\/version&gt;\n        &lt;\/dependency&gt;\n        &lt;!--SpringBoot\u4e0eRedis\u6574\u5408\u4f9d\u8d56--&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n            &lt;artifactId&gt;spring-boot-starter-data-redis&lt;\/artifactId&gt;\n        &lt;\/dependency&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;org.apache.commons&lt;\/groupId&gt;\n            &lt;artifactId&gt;commons-pool2&lt;\/artifactId&gt;\n        &lt;\/dependency&gt;\n        &lt;!--swagger2--&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;io.springfox&lt;\/groupId&gt;\n            &lt;artifactId&gt;springfox-swagger2&lt;\/artifactId&gt;\n            &lt;version&gt;2.9.2&lt;\/version&gt;\n        &lt;\/dependency&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;io.springfox&lt;\/groupId&gt;\n            &lt;artifactId&gt;springfox-swagger-ui&lt;\/artifactId&gt;\n            &lt;version&gt;2.9.2&lt;\/version&gt;\n        &lt;\/dependency&gt;\n        &lt;!--\u901a\u7528\u57fa\u7840\u914d\u7f6ejunit\/devtools\/test\/log4j\/lombok\/hutool--&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;junit&lt;\/groupId&gt;\n            &lt;artifactId&gt;junit&lt;\/artifactId&gt;\n            &lt;version&gt;${junit.version}&lt;\/version&gt;\n        &lt;\/dependency&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n            &lt;artifactId&gt;spring-boot-starter-test&lt;\/artifactId&gt;\n            &lt;scope&gt;test&lt;\/scope&gt;\n        &lt;\/dependency&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;log4j&lt;\/groupId&gt;\n            &lt;artifactId&gt;log4j&lt;\/artifactId&gt;\n            &lt;version&gt;${log4j.version}&lt;\/version&gt;\n        &lt;\/dependency&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;org.projectlombok&lt;\/groupId&gt;\n            &lt;artifactId&gt;lombok&lt;\/artifactId&gt;\n            &lt;version&gt;${lombok.version}&lt;\/version&gt;\n            &lt;optional&gt;true&lt;\/optional&gt;\n        &lt;\/dependency&gt;\n    &lt;\/dependencies&gt;\n\n    &lt;build&gt;\n        &lt;plugins&gt;\n            &lt;plugin&gt;\n                &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n                &lt;artifactId&gt;spring-boot-maven-plugin&lt;\/artifactId&gt;\n            &lt;\/plugin&gt;\n        &lt;\/plugins&gt;\n    &lt;\/build&gt;\n\n&lt;\/project&gt;<\/code><\/pre>\n<h4>3\u3001\u5199yaml\u914d\u7f6e\u6587\u4ef6<\/h4>\n<p>1\u3001\u672c\u4f8b\u4e2d\u5982\u4e0b<\/p>\n<pre><code>## ========================redis\u5355\u673a=====================\n#spring.redis.database=0\n## \u81ea\u5df1\u771f\u5b9e\u7684IP\n#spring.redis.host=192.168.171.129 #\u8fd9\u4e2a\u662freidsstuyd\u865a\u62df\u673a\u7684\u5730\u5740\n#spring.redis.port=6379\n#spring.redis.password=111111\n#spring.redis.lettuce.pool.max-active=8\n#spring.redis.lettuce.pool.max-wait=-1ms\n#spring.redis.lettuce.pool.max-idle=8\n#spring.redis.lettuce.pool.min-idle=0<\/code><\/pre>\n<h4>4\u3001\u7f16\u5199\u542f\u52a8\u7c7b<\/h4>\n<p>1\u3001\u5982\u4e0b<\/p>\n<pre><code class=\"language-java\">package com.atguigu.redis7;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\n\n\/**\n * @auther zzyy\n * @create 2022-11-17 16:36\n *\/\n@SpringBootApplication\npublic class Redis7Study7777\n{\n    public static void main(String[] args)\n    {\n        SpringApplication.run(Redis7Study7777.class,args);\n    }\n}\n<\/code><\/pre>\n<h4>5\u3001\u914d\u7f6e\u7c7bConfig<\/h4>\n<p>1\u3001\u8fd9\u91cc\u8981\u914d\u7f6e\u4e24\u4e2aconfig<\/p>\n<p>2\u3001\u7b2c\u4e00\u4e2a\u662fRedisConfig\uff0c\u8fd9\u4e2a\u4e1c\u897f\u662f\u7528\u6765\u5e8f\u5217\u5316\u7684\u3002\u5982\u679c\u4e0d\u8bbe\u7f6e\u8fd9\u4e2a\uff0c\u5199\u5165redis\u548c\u8bfb\u51faredis\u4e2d\u7684\u6570\u636e\u90fd\u662f\u5e8f\u5217\u5316\u4e71\u7801<\/p>\n<ul>\n<li>\n<pre><code class=\"language-java\">package com.atguigu.redis7.config;\n\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;\nimport org.springframework.data.redis.core.RedisTemplate;\nimport org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;\nimport org.springframework.data.redis.serializer.StringRedisSerializer;\n\n\/**\n* @auther zzyy\n* @create 2022-11-17 17:34\n*\/\n@Configuration\npublic class RedisConfig\n{\n  \/**\n   * redis\u5e8f\u5217\u5316\u7684\u5de5\u5177\u914d\u7f6e\u7c7b\uff0c\u4e0b\u9762\u8fd9\u4e2a\u8bf7\u4e00\u5b9a\u5f00\u542f\u914d\u7f6e\n   * 127.0.0.1:6379> keys *\n   * 1) \"ord:102\"  \u5e8f\u5217\u5316\u8fc7\n   * 2) \"\\xac\\xed\\x00\\x05t\\x00\\aord:102\"   \u91ce\u751f\uff0c\u6ca1\u6709\u5e8f\u5217\u5316\u8fc7\n   * this.redisTemplate.opsForValue(); \/\/\u63d0\u4f9b\u4e86\u64cd\u4f5cstring\u7c7b\u578b\u7684\u6240\u6709\u65b9\u6cd5\n   * this.redisTemplate.opsForList(); \/\/ \u63d0\u4f9b\u4e86\u64cd\u4f5clist\u7c7b\u578b\u7684\u6240\u6709\u65b9\u6cd5\n   * this.redisTemplate.opsForSet(); \/\/\u63d0\u4f9b\u4e86\u64cd\u4f5cset\u7684\u6240\u6709\u65b9\u6cd5\n   * this.redisTemplate.opsForHash(); \/\/\u63d0\u4f9b\u4e86\u64cd\u4f5chash\u8868\u7684\u6240\u6709\u65b9\u6cd5\n   * this.redisTemplate.opsForZSet(); \/\/\u63d0\u4f9b\u4e86\u64cd\u4f5czset\u7684\u6240\u6709\u65b9\u6cd5\n   * @param lettuceConnectionFactory\n   * @return\n   *\/\n  @Bean\n  public RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory lettuceConnectionFactory)\n  {\n      RedisTemplate<String,Object> redisTemplate = new RedisTemplate<>();\n\n      redisTemplate.setConnectionFactory(lettuceConnectionFactory);\n      \/\/\u8bbe\u7f6ekey\u5e8f\u5217\u5316\u65b9\u5f0fstring\n      redisTemplate.setKeySerializer(new StringRedisSerializer());\n      \/\/\u8bbe\u7f6evalue\u7684\u5e8f\u5217\u5316\u65b9\u5f0fjson\uff0c\u4f7f\u7528GenericJackson2JsonRedisSerializer\u66ff\u6362\u9ed8\u8ba4\u5e8f\u5217\u5316\n      redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());\n\n      redisTemplate.setHashKeySerializer(new StringRedisSerializer());\n      redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());\n\n      redisTemplate.afterPropertiesSet();\n\n      return redisTemplate;\n  }\n}<\/code><\/pre>\n<\/li>\n<li>\n<p>\u5982\u4e0b\u56fe\u7684\u4e71\u7801<\/p>\n<\/li>\n<li>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/zyg.luchers.cn\/wp-content\/uploads\/2024\/04\/image-20240406134330869.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"http:\/\/zyg.luchers.cn\/wp-content\/uploads\/2024\/04\/image-20240406134330869.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20240406134330869\" \/><\/div><\/p>\n<\/li>\n<\/ul>\n<p>3\u3001\u914d\u7f6eSwaggerConfig<\/p>\n<ul>\n<li>\n<p>\u8fd9\u4e2a\u662f\u7528\u6765\u65b9\u4fbf\u6d4b\u8bd5\u7528\u7684<\/p>\n<\/li>\n<li>\n<pre><code class=\"language-java\">package com.atguigu.redis7.config;\n\nimport org.springframework.beans.factory.annotation.Value;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\nimport springfox.documentation.builders.ApiInfoBuilder;\nimport springfox.documentation.builders.PathSelectors;\nimport springfox.documentation.builders.RequestHandlerSelectors;\nimport springfox.documentation.service.ApiInfo;\nimport springfox.documentation.spi.DocumentationType;\nimport springfox.documentation.spring.web.plugins.Docket;\nimport springfox.documentation.swagger2.annotations.EnableSwagger2;\n\nimport java.time.LocalDateTime;\nimport java.time.format.DateTimeFormatter;\n\n\/**\n* @auther zzyy\n* @create 2022-11-17 17:44\n*\/\n@Configuration\n@EnableSwagger2\npublic class SwaggerConfig\n{\n  @Value(\"${spring.swagger2.enabled}\")\n  private Boolean enabled;\n\n  @Bean\n  public Docket createRestApi() {\n      return new Docket(DocumentationType.SWAGGER_2)\n              .apiInfo(apiInfo())\n              .enable(enabled)\n              .select()\n              .apis(RequestHandlerSelectors.basePackage(\"com.atguigu.redis7\")) \/\/\u4f60\u81ea\u5df1\u7684package\n              .paths(PathSelectors.any())\n              .build();\n  }\n  public ApiInfo apiInfo() {\n      return new ApiInfoBuilder()\n              .title(\"springboot\u5229\u7528swagger2\u6784\u5efaapi\u63a5\u53e3\u6587\u6863 \"+\"\\t\"+ DateTimeFormatter.ofPattern(\"yyyy-MM-dd\").format(LocalDateTime.now()))\n              .description(\"springboot+redis\u6574\u5408,\u6709\u95ee\u9898\u7ed9\u7ba1\u7406\u5458\u9633\u54e5\u90ae\u4ef6:zzyybs@126.com\")\n              .version(\"1.0\")\n              .termsOfServiceUrl(\"https:\/\/www.atguigu.com\/\")\n              .build();\n  }\n}<\/code><\/pre>\n<\/li>\n<\/ul>\n<h4>6\u3001\u4e1a\u52a1\u7c7b<\/h4>\n<p>1\u3001\u8fd9\u91cc\u7f16\u5199\u4e00\u4e2a\u8ba2\u5355\u63a5\u53e3<\/p>\n<p>1\u3001\u63a5\u53e3\u5305\u542b\u6dfb\u52a0\u8ba2\u5355\u3001\u6839\u636eid\u67e5\u8be2\u8ba2\u5355\uff0c\u4e24\u4e2a\u65b9\u6cd5<\/p>\n<p>1\u3001service<\/p>\n<pre><code class=\"language-java\">package com.atguigu.redis7.service;\n\nimport lombok.extern.slf4j.Slf4j;\nimport org.springframework.data.redis.core.RedisTemplate;\nimport org.springframework.stereotype.Service;\n\nimport javax.annotation.Resource;\nimport java.util.UUID;\nimport java.util.concurrent.ThreadLocalRandom;\n\n\/**\n * @auther zzyy\n * @create 2022-07-14 15:11\n *\/\n@Service\n@Slf4j\npublic class OrderService\n{\n    public static final String ORDER_KEY = &quot;order:&quot;;\n\n    @Resource\n    private RedisTemplate redisTemplate;\n\n    public void addOrder()\n    {\n        int keyId = ThreadLocalRandom.current().nextInt(1000)+1;\n        String orderNo = UUID.randomUUID().toString();\n        redisTemplate.opsForValue().set(ORDER_KEY+keyId,&quot;\u4eac\u4e1c\u8ba2\u5355&quot;+ orderNo);\n        log.info(&quot;=====&gt;\u7f16\u53f7&quot;+keyId+&quot;\u7684\u8ba2\u5355\u6d41\u6c34\u751f\u6210:{}&quot;,orderNo);\n    }\n\n    public String getOrderById(Integer id)\n    {\n        return (String)redisTemplate.opsForValue().get(ORDER_KEY + id);\n    }\n}<\/code><\/pre>\n<p>2\u3001Controller<\/p>\n<pre><code class=\"language-java\">package com.atguigu.redis7.controller;\nimport com.atguigu.redis7.service.OrderService;\n\nimport io.swagger.annotations.Api;\nimport io.swagger.annotations.ApiOperation;\nimport lombok.extern.slf4j.Slf4j;\nimport org.springframework.web.bind.annotation.PathVariable;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestMethod;\nimport org.springframework.web.bind.annotation.RestController;\n\nimport javax.annotation.Resource;\nimport java.util.concurrent.ThreadLocalRandom;\n\n\/**\n * @auther zzyy\n * @create 2022-07-14 15:08\n *\/\n@Api(tags = &quot;\u8ba2\u5355\u63a5\u53e3&quot;)\n@RestController\n@Slf4j\npublic class OrderController\n{\n    @Resource\n    private OrderService orderService;\n\n    @ApiOperation(&quot;\u65b0\u589e\u8ba2\u5355&quot;)\n    @RequestMapping(value = &quot;\/order\/add&quot;,method = RequestMethod.POST)\n    public void addOrder()\n    {\n        orderService.addOrder();\n    }\n\n    @ApiOperation(&quot;\u6309orderId\u67e5\u8ba2\u5355\u4fe1\u606f&quot;)\n    @RequestMapping(value = &quot;\/order\/{id}&quot;, method = RequestMethod.GET)\n    public String findUserById(@PathVariable Integer id)\n    {\n        return orderService.getOrderById(id);\n    }\n}<\/code><\/pre>\n<h4>7\u3001\u5e8f\u5217\u5316\u95ee\u9898<\/h4>\n<p>1\u3001\u4ea7\u751f\u539f\u56e0<\/p>\n<ul>\n<li>\u8fd9\u91ccRedisTemplate\u6ca1\u6709\u7528StringSerializer\u7684\u5e8f\u5217\u5316\u3002\u800c\u662f\u7528Jdk\u7684\u5e8f\u5217\u5316<\/li>\n<li>\u5982\u56fe<\/li>\n<li><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/zyg.luchers.cn\/wp-content\/uploads\/2024\/04\/image-20240406134504838.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"http:\/\/zyg.luchers.cn\/wp-content\/uploads\/2024\/04\/image-20240406134504838.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20240406134504838\" \/><\/div><\/li>\n<\/ul>\n<h3>2\u3001\u8fde\u63a5\u96c6\u7fa4<\/h3>\n<h4>1\u3001\u6ce8\u610f<\/h4>\n<p>1\u3001\u95ee\u9898\u4e00<\/p>\n<ul>\n<li>\n<pre><code>Could not connect to Redis No route to host<\/code><\/pre>\n<\/li>\n<li>\n<p>\u89e3\u51b3<\/p>\n<\/li>\n<li>\n<pre><code>\u5173\u95edredis\u96c6\u7fa4\u4e0a\uff0c\u673a\u5668\u7684\u9632\u706b\u5899<\/code><\/pre>\n<\/li>\n<\/ul>\n<p>2\u3001\u95ee\u9898\u4e8c<\/p>\n<ul>\n<li>\n<pre><code>Node 192.168.171.129:6381 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.<\/code><\/pre>\n<\/li>\n<li>\n<p>\u89e3\u51b3<\/p>\n<\/li>\n<li>\n<pre><code>\u8fd9\u4e2a\u95ee\u9898\u662f\u56e0\u4e3a\u6211\u5355\u673a\u542f\u52a8\u4e86redis\uff0c\u7ed3\u679c\u96c6\u7fa4\u5c31\u53d1\u73b0\uff0c\u8fd9\u4e48\u591a\u4e2aredis\u7684\u6570\u636e\u4e0d\u4e00\u81f4\uff0c\u6240\u4ee5\u3002\u4e00\u5b9a\u8981\u4fdd\u6301\u6570\u636e\u4e00\u76f4\uff01\n\u6211\u4eec\u53ef\u4ee5\u628ardb\u548caof\u6587\u4ef6\u5220\u4e86\uff0c\u7136\u540e\u91cd\u542f\u5c31\u884c<\/code><\/pre>\n<\/li>\n<\/ul>\n<h4>2\u3001\u6539\u5199yaml\u914d\u7f6e\u6587\u4ef6<\/h4>\n<pre><code># ========================redis\u96c6\u7fa4=====================\nspring.redis.password=111111\n# \u83b7\u53d6\u5931\u8d25 \u6700\u5927\u91cd\u5b9a\u5411\u6b21\u6570\nspring.redis.cluster.max-redirects=3\nspring.redis.lettuce.pool.max-active=8\nspring.redis.lettuce.pool.max-wait=-1ms\nspring.redis.lettuce.pool.max-idle=8\nspring.redis.lettuce.pool.min-idle=0\nspring.redis.cluster.nodes=192.168.111.175:6381,192.168.111.175:6382,192.168.111.172:6383,192.168.111.172:6384,192.168.111.174:6385,192.168.111.174:6386<\/code><\/pre>\n<h4>3\u3001\u6a21\u62df\u4eba\u4e3a\u5b95\u673a\uff08\u95ee\u9898\uff09<\/h4>\n<p>1\u3001\u4eba\u4e3a\u5173\u95ed6379\u7aef\u53e3\uff0c<\/p>\n<p>2\u3001\u51fa\u73b0\u6545\u969c\uff1aspringboot\u5ba2\u6237\u7aef\u6ca1\u6709\u52a8\u6001\u611f\u77e5\u5230redisCluster\u7684\u6700\u65b0\u96c6\u7fa4\u6d88\u606f<\/p>\n<ul>\n<li>\u5982\u56fe<\/li>\n<li><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/zyg.luchers.cn\/wp-content\/uploads\/2024\/04\/image-20240406145719005.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"http:\/\/zyg.luchers.cn\/wp-content\/uploads\/2024\/04\/image-20240406145719005.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20240406145719005\" \/><\/div><\/li>\n<\/ul>\n<p>3\u3001\u5ba2\u6237\u7aef\u8bbf\u95ee\u51fa\u73b0\u95ee\u9898<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/zyg.luchers.cn\/wp-content\/uploads\/2024\/04\/image-20240406145729984.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"http:\/\/zyg.luchers.cn\/wp-content\/uploads\/2024\/04\/image-20240406145729984.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20240406145729984\" \/><\/div><\/p>\n<h4>4\u3001\u89e3\u51b3\u65b9\u6cd5<\/h4>\n<h5>1\u3001\u65b9\u6cd5\u4e00\uff08\u4e0d\u63a8\u8350\uff09<\/h5>\n<p>1\u3001\u6211\u4eec\u628alettuce\u6362\u6389\uff0c\u6362\u6210jedis<\/p>\n<p>2\u3001\u5982\u56fe<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/zyg.luchers.cn\/wp-content\/uploads\/2024\/04\/image-20240406145835823.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"http:\/\/zyg.luchers.cn\/wp-content\/uploads\/2024\/04\/image-20240406145835823.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20240406145835823\" \/><\/div><\/p>\n<h5>2\u3001\u65b9\u6cd5\u4e8c\uff08\u4e0d\u63a8\u8350\uff09<\/h5>\n<p>1\u3001\u91cd\u5199\u8fde\u63a5\u5de5\u5382\u5b9e\u4f8b\u5bf9\u8c61\uff0c\u9664\u975e\u4f60\u662f\u5927\u725b\uff0c\u5426\u5219\u4e0d\u8981\u4f5c\u6b7b<\/p>\n<p>2\u3001\u5982\u4e0b\u4ee3\u7801<\/p>\n<pre><code class=\"language-java\">\/\/\u4ec5\u505a\u53c2\u8003\uff0c\u4e0d\u5199\uff0c\u4e0d\u5199\uff0c\u4e0d\u5199\u3002\n\n@Bean\n\npublic DefaultClientResources lettuceClientResources() {\n\n    return DefaultClientResources.create();\n\n}\n\n@Bean\n\npublic LettuceConnectionFactory lettuceConnectionFactory(RedisProperties redisProperties, ClientResources clientResources) {\n\n    ClusterTopologyRefreshOptions topologyRefreshOptions = ClusterTopologyRefreshOptions.builder()\n\n            .enablePeriodicRefresh(Duration.ofSeconds(30)) \/\/\u6309\u7167\u5468\u671f\u5237\u65b0\u62d3\u6251\n\n            .enableAllAdaptiveRefreshTriggers() \/\/\u6839\u636e\u4e8b\u4ef6\u5237\u65b0\u62d3\u6251\n\n            .build();\n\n    ClusterClientOptions clusterClientOptions = ClusterClientOptions.builder()\n\n            \/\/redis\u547d\u4ee4\u8d85\u65f6\u65f6\u95f4,\u8d85\u65f6\u540e\u624d\u4f1a\u4f7f\u7528\u65b0\u7684\u62d3\u6251\u4fe1\u606f\u91cd\u65b0\u5efa\u7acb\u8fde\u63a5\n\n            .timeoutOptions(TimeoutOptions.enabled(Duration.ofSeconds(10)))\n\n            .topologyRefreshOptions(topologyRefreshOptions)\n\n            .build();\n\n    LettuceClientConfiguration clientConfiguration = LettuceClientConfiguration.builder()\n\n            .clientResources(clientResources)\n\n            .clientOptions(clusterClientOptions)\n\n            .build();\n\n    RedisClusterConfiguration clusterConfig = new RedisClusterConfiguration(redisProperties.getCluster().getNodes());\n\n    clusterConfig.setMaxRedirects(redisProperties.getCluster().getMaxRedirects());\n\n    clusterConfig.setPassword(RedisPassword.of(redisProperties.getPassword()));\n\n    LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory(clusterConfig, clientConfiguration);\n\n    return lettuceConnectionFactory;\n\n}<\/code><\/pre>\n<h5>3\u3001\u65b9\u6cd5\u4e09\uff08\u63a8\u8350\uff09<\/h5>\n<p>1\u3001\u6211\u4eec\u8bbe\u7f6eyaml\u914d\u7f6e\u6587\u4ef6<\/p>\n<p>2\u3001\u5982\u4e0b<\/p>\n<pre><code>#\u652f\u6301\u96c6\u7fa4\u62d3\u6251\u52a8\u6001\u611f\u5e94\u5237\u65b0,\u81ea\u9002\u5e94\u62d3\u6251\u5237\u65b0\u662f\u5426\u4f7f\u7528\u6240\u6709\u53ef\u7528\u7684\u66f4\u65b0\uff0c\u9ed8\u8ba4false\u5173\u95ed\nspring.redis.lettuce.cluster.refresh.adaptive=true\n#\u5b9a\u65f6\u5237\u65b0\nspring.redis.lettuce.cluster.refresh.period=2000<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u7b2c\u5341\u4e8c\u7ae0\u3001redis\u6574\u5408springboot 1\u3001\u603b\u4f53\u6982\u8ff0 1\u3001\u6709\u4e09\u4e2ajar\u5305\u76ee\u524d\u5e02\u9762\u5e38\u7528 2\u3001jedis\uff1a\u7ecf [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[37],"tags":[],"class_list":["post-5873","post","type-post","status-publish","format-standard","hentry","category-redis"],"_links":{"self":[{"href":"http:\/\/zyg.luchers.cn\/index.php\/wp-json\/wp\/v2\/posts\/5873","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/zyg.luchers.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/zyg.luchers.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/zyg.luchers.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/zyg.luchers.cn\/index.php\/wp-json\/wp\/v2\/comments?post=5873"}],"version-history":[{"count":1,"href":"http:\/\/zyg.luchers.cn\/index.php\/wp-json\/wp\/v2\/posts\/5873\/revisions"}],"predecessor-version":[{"id":5874,"href":"http:\/\/zyg.luchers.cn\/index.php\/wp-json\/wp\/v2\/posts\/5873\/revisions\/5874"}],"wp:attachment":[{"href":"http:\/\/zyg.luchers.cn\/index.php\/wp-json\/wp\/v2\/media?parent=5873"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/zyg.luchers.cn\/index.php\/wp-json\/wp\/v2\/categories?post=5873"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/zyg.luchers.cn\/index.php\/wp-json\/wp\/v2\/tags?post=5873"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}