{"id":202362,"date":"2025-05-10T09:07:56","date_gmt":"2025-05-10T01:07:56","guid":{"rendered":"https:\/\/server.hk\/cnblog\/202362\/"},"modified":"2025-05-10T09:07:56","modified_gmt":"2025-05-10T01:07:56","slug":"springboot%e9%9b%86%e6%88%90redis%e5%ae%9e%e4%be%8b%e5%88%86%e6%9e%90","status":"publish","type":"post","link":"https:\/\/server.hk\/cnblog\/202362\/","title":{"rendered":"Springboot\u96c6\u6210Redis\u5b9e\u4f8b\u5206\u6790"},"content":{"rendered":"<p><b><\/b> <\/p>\n<h1>Springboot\u96c6\u6210Redis\u5b9e\u4f8b\u5206\u6790<\/h1>\n<p><span style=\"cursor: pointer\"><i><\/i>\u6536\u85cf<\/span> <\/p>\n<p>\u6765\u5230golang\u5b66\u4e60\u7f51\u7684\u5927\u5bb6\uff0c\u76f8\u4fe1\u90fd\u662f\u7f16\u7a0b\u5b66\u4e60\u7231\u597d\u8005\uff0c\u5e0c\u671b\u5728\u8fd9\u91cc\u5b66\u4e60\u6570\u636e\u5e93\u76f8\u5173\u7f16\u7a0b\u77e5\u8bc6\u3002\u4e0b\u9762\u672c\u7bc7\u6587\u7ae0\u5c31\u6765\u5e26\u5927\u5bb6\u804a\u804a\u300aSpringboot\u96c6\u6210Redis\u5b9e\u4f8b\u5206\u6790\u300b\uff0c\u4ecb\u7ecd\u4e00\u4e0b\uff0c\u5e0c\u671b\u5bf9\u5927\u5bb6\u7684\u77e5\u8bc6\u79ef\u7d2f\u6709\u6240\u5e2e\u52a9\uff0c\u52a9\u529b\u5b9e\u6218\u5f00\u53d1\uff01<\/p>\n<p>\u4f9d\u8d56\u5305<\/p>\n<pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;dependency&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;artifactId&gt;spring-boot-starter-data-redis&lt;\/artifactId&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/dependency&gt;<\/pre>\n<p>\u914d\u7f6e\u6587\u4ef6(application.properties)<\/p>\n<pre>#&nbsp;Redis\u6570\u636e\u5e93\u7d22\u5f15\uff08\u9ed8\u8ba4\u4e3a0\uff09\nspring.redis.database=0\n#&nbsp;Redis\u670d\u52a1\u5668\u5730\u5740\nspring.redis.host=x.x.x.x\n#&nbsp;Redis\u670d\u52a1\u5668\u8fde\u63a5\u7aef\u53e3\nspring.redis.port=6738\n#&nbsp;Redis\u670d\u52a1\u5668\u8fde\u63a5\u5bc6\u7801\uff08\u9ed8\u8ba4\u4e3a\u7a7a\uff09\nspring.redis.password=\n#&nbsp;\u8fde\u63a5\u8d85\u65f6\u65f6\u95f4\uff08\u6beb\u79d2\uff09\nspring.redis.timeout=10000\n#&nbsp;\u8fde\u63a5\u6c60\u6700\u5927\u8fde\u63a5\u6570\uff08\u4f7f\u7528\u8d1f\u503c\u8868\u793a\u6ca1\u6709\u9650\u5236\uff09\nspring.redis.jedis.pool.max-active=8\n#&nbsp;\u8fde\u63a5\u6c60\u6700\u5927\u963b\u585e\u7b49\u5f85\u65f6\u95f4\uff08\u4f7f\u7528\u8d1f\u503c\u8868\u793a\u6ca1\u6709\u9650\u5236\uff09\nspring.redis.jedis.pool.max-wait=-1ms\n#&nbsp;\u8fde\u63a5\u6c60\u4e2d\u7684\u6700\u5927\u7a7a\u95f2\u8fde\u63a5\nspring.redis.jedis.pool.max-idle=8\n#&nbsp;\u8fde\u63a5\u6c60\u4e2d\u7684\u6700\u5c0f\u7a7a\u95f2\u8fde\u63a5\nspring.redis.jedis.pool.min-idle=0<\/pre>\n<p>\u914d\u7f6e\u6587\u4ef6(RedisConfig.java)<\/p>\n<pre>package&nbsp;com.gxr.dmsData.config;\n\nimport&nbsp;com.fasterxml.jackson.annotation.JsonAutoDetect;\nimport&nbsp;com.fasterxml.jackson.annotation.PropertyAccessor;\nimport&nbsp;com.fasterxml.jackson.databind.ObjectMapper;\nimport&nbsp;org.springframework.context.annotation.Bean;\nimport&nbsp;org.springframework.context.annotation.Configuration;\nimport&nbsp;org.springframework.data.redis.connection.RedisConnectionFactory;\nimport&nbsp;org.springframework.data.redis.core.RedisTemplate;\nimport&nbsp;org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;\nimport&nbsp;org.springframework.data.redis.serializer.RedisSerializer;\nimport&nbsp;org.springframework.data.redis.serializer.StringRedisSerializer;\n\nimport&nbsp;java.text.SimpleDateFormat;\n\n\/**\n&nbsp;*&nbsp;@author&nbsp;\uff1agongxr\n&nbsp;*&nbsp;@description\uff1a&nbsp;\u81ea\u5b9a\u4e49RedisTemplate\n&nbsp;*&nbsp;@date&nbsp;\uff1aCreated&nbsp;in&nbsp;2021\/6\/30\n&nbsp;*\/\n@Configuration\npublic&nbsp;class&nbsp;RedisConfig&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;@Bean\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;RedisTemplate&lt;Object,&nbsp;Object&gt;&nbsp;redisTemplate(RedisConnectionFactory&nbsp;redisConnectionFactory)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RedisTemplate&lt;Object,&nbsp;Object&gt;&nbsp;redisTemplate&nbsp;=&nbsp;new&nbsp;RedisTemplate&lt;&gt;();\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;redisTemplate.setConnectionFactory(redisConnectionFactory);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/&nbsp;\u4fee\u6539key\u7684\u9ed8\u8ba4\u5e8f\u5217\u5316\u5668\u4e3a&nbsp;string\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RedisSerializer&lt;String&gt;&nbsp;stringRedisSerializer&nbsp;=&nbsp;new&nbsp;StringRedisSerializer();\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;redisTemplate.setDefaultSerializer(stringRedisSerializer);\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/&nbsp;\u81ea\u5b9a\u4e49&nbsp;\u5bf9\u8c61\u8f6c\u6362\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ObjectMapper&nbsp;objectMapper&nbsp;=&nbsp;new&nbsp;ObjectMapper();\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objectMapper.setDateFormat(new&nbsp;SimpleDateFormat(\"yyyy-MM-dd&nbsp;HH:mm:ss\"));\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objectMapper.setVisibility(PropertyAccessor.ALL,&nbsp;JsonAutoDetect.Visibility.ANY);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Jackson2JsonRedisSerializer&lt;Object&gt;&nbsp;valueSerializer&nbsp;=&nbsp;new&nbsp;Jackson2JsonRedisSerializer&lt;&gt;(Object.class);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;valueSerializer.setObjectMapper(objectMapper);\n\/\/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;redisTemplate.setValueSerializer(valueSerializer);\n\/\/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;redisTemplate.setHashValueSerializer(valueSerializer);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;redisTemplate.afterPropertiesSet();\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;redisTemplate;\n&nbsp;&nbsp;&nbsp;&nbsp;}\n}<\/pre>\n<p>\u6d4b\u8bd5\u4ee3\u7801<\/p>\n<pre>import&nbsp;com.gxr.dmsData.common.BaseTest;\nimport&nbsp;lombok.extern.slf4j.Slf4j;\nimport&nbsp;org.junit.Test;\nimport&nbsp;org.springframework.beans.factory.annotation.Autowired;\nimport&nbsp;org.springframework.data.redis.core.RedisTemplate;\n\nimport&nbsp;java.util.Set;\n\n\/**\n&nbsp;*&nbsp;@author&nbsp;\uff1agongxr\n&nbsp;*&nbsp;@description\uff1a\n&nbsp;*&nbsp;@date&nbsp;\uff1aCreated&nbsp;in&nbsp;2021\/6\/30\n&nbsp;*\/\n@Slf4j\npublic&nbsp;class&nbsp;TestRedis&nbsp;extends&nbsp;BaseTest&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;@Autowired\n&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;RedisTemplate&nbsp;redisTemplate;\n\n&nbsp;&nbsp;&nbsp;&nbsp;\/**\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;RedisTemplate\u4e2d\u5b9a\u4e49\u4e86\u5bf95\u79cd\u6570\u636e\u7ed3\u6784\u64cd\u4f5c\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;redisTemplate.opsForValue();\/\/\u64cd\u4f5c\u5b57\u7b26\u4e32\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;redisTemplate.opsForHash();\/\/\u64cd\u4f5chash\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;redisTemplate.opsForList();\/\/\u64cd\u4f5clist\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;redisTemplate.opsForSet();\/\/\u64cd\u4f5cset\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;redisTemplate.opsForZSet();\/\/\u64cd\u4f5c\u6709\u5e8fset\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/\n&nbsp;&nbsp;&nbsp;&nbsp;@Test\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;testRedisGet()&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;key&nbsp;=&nbsp;\"adviceCalculateTime\";\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Boolean&nbsp;b&nbsp;=&nbsp;redisTemplate.hasKey(key);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.info(\"key\u662f\u5426\u5b58\u5728\uff1a{}\",&nbsp;b);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;o&nbsp;=&nbsp;redisTemplate.boundValueOps(key).get();\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.info(redisTemplate.toString());\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.info(\"\u67e5\u8be2\u7ed3\u679c\uff1a{}\",&nbsp;o);\n&nbsp;&nbsp;&nbsp;&nbsp;}\n\n&nbsp;&nbsp;&nbsp;&nbsp;\/**\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;map\u7c7b\u578b\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/\n&nbsp;&nbsp;&nbsp;&nbsp;@Test\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;testRedisHash()&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;key&nbsp;=&nbsp;\"RRS_CURRENCY_CACHE\";\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;o&nbsp;=&nbsp;redisTemplate.boundHashOps(key).get(\"590\");\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.info(\"\u67e5\u8be2\u7ed3\u679c\uff1a{}\",&nbsp;o.toString());\n&nbsp;&nbsp;&nbsp;&nbsp;}\n\n&nbsp;&nbsp;&nbsp;&nbsp;\/**\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;set\u7c7b\u578b\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/\n&nbsp;&nbsp;&nbsp;&nbsp;@Test\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;testRedisSet()&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;key&nbsp;=&nbsp;\"goodsDataSyncSkc:set\";\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set&nbsp;set&nbsp;=&nbsp;redisTemplate.boundSetOps(key).members();\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.info(\"\u67e5\u8be2\u7ed3\u679c\uff1a{}\",&nbsp;set.size());\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;s&nbsp;=&nbsp;(String)&nbsp;redisTemplate.boundSetOps(key).randomMember();\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.info(\"\u67e5\u8be2\u7ed3\u679c\uff1a{}\",&nbsp;s);\n&nbsp;&nbsp;&nbsp;&nbsp;}\n\n}<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Springboot\u96c6\u6210Redi&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[101],"tags":[],"class_list":["post-202362","post","type-post","status-publish","format-standard","hentry","category-database"],"_links":{"self":[{"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/posts\/202362","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/comments?post=202362"}],"version-history":[{"count":0,"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/posts\/202362\/revisions"}],"wp:attachment":[{"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/media?parent=202362"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/categories?post=202362"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/server.hk\/cnblog\/wp-json\/wp\/v2\/tags?post=202362"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}