diff --git a/spring-boot-redis/pom.xml b/spring-boot-redis/pom.xml new file mode 100644 index 0000000..3f836ab --- /dev/null +++ b/spring-boot-redis/pom.xml @@ -0,0 +1,60 @@ + + + 4.0.0 + + com.neo + spring-boot-redis + 1.0.0-SNAPSHOT + jar + + spring-boot-redis + Demo project for Spring Boot + + + org.springframework.boot + spring-boot-starter-parent + 2.1.0.RELEASE + + + + + UTF-8 + 1.8 + + + + + org.springframework.boot + spring-boot-starter-data-redis + + + org.apache.commons + commons-pool2 + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.session + spring-session-data-redis + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + diff --git a/spring-boot-redis/src/main/java/com/neo/RedisApplication.java b/spring-boot-redis/src/main/java/com/neo/RedisApplication.java new file mode 100644 index 0000000..9c41bed --- /dev/null +++ b/spring-boot-redis/src/main/java/com/neo/RedisApplication.java @@ -0,0 +1,12 @@ +package com.neo; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class RedisApplication { + + public static void main(String[] args) { + SpringApplication.run(RedisApplication.class, args); + } +} diff --git a/spring-boot-redis/src/main/java/com/neo/config/RedisConfig.java b/spring-boot-redis/src/main/java/com/neo/config/RedisConfig.java new file mode 100644 index 0000000..f267489 --- /dev/null +++ b/spring-boot-redis/src/main/java/com/neo/config/RedisConfig.java @@ -0,0 +1,34 @@ +package com.neo.config; + +import java.lang.reflect.Method; + +import org.springframework.cache.CacheManager; +import org.springframework.cache.annotation.CachingConfigurerSupport; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.cache.interceptor.KeyGenerator; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.cache.RedisCacheManager; +import org.springframework.data.redis.core.RedisTemplate; + + +@Configuration +@EnableCaching +public class RedisConfig extends CachingConfigurerSupport{ + + @Bean + public KeyGenerator keyGenerator() { + return new KeyGenerator() { + @Override + public Object generate(Object target, Method method, Object... params) { + StringBuilder sb = new StringBuilder(); + sb.append(target.getClass().getName()); + sb.append(method.getName()); + for (Object obj : params) { + sb.append(obj.toString()); + } + return sb.toString(); + } + }; + } +} \ No newline at end of file diff --git a/spring-boot-redis/src/main/java/com/neo/config/SessionConfig.java b/spring-boot-redis/src/main/java/com/neo/config/SessionConfig.java new file mode 100644 index 0000000..400f03f --- /dev/null +++ b/spring-boot-redis/src/main/java/com/neo/config/SessionConfig.java @@ -0,0 +1,9 @@ +package com.neo.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession; + +@Configuration +@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 86400*30) +public class SessionConfig { +} \ No newline at end of file diff --git a/spring-boot-redis/src/main/java/com/neo/model/User.java b/spring-boot-redis/src/main/java/com/neo/model/User.java new file mode 100644 index 0000000..0457488 --- /dev/null +++ b/spring-boot-redis/src/main/java/com/neo/model/User.java @@ -0,0 +1,88 @@ +package com.neo.model; + +import java.io.Serializable; + + + +public class User implements Serializable { + + private static final long serialVersionUID = 1L; + private Long id; + private String userName; + private String password; + private String email; + private String nickname; + private String regTime; + + public User() { + super(); + } + public User(String email, String nickname, String password, String userName, String regTime) { + super(); + this.email = email; + this.nickname = nickname; + this.password = password; + this.userName = userName; + this.regTime = regTime; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getNickname() { + return nickname; + } + + public void setNickname(String nickname) { + this.nickname = nickname; + } + + public String getRegTime() { + return regTime; + } + + public void setRegTime(String regTime) { + this.regTime = regTime; + } + + @Override + public String toString() { + return "User{" + + "id=" + id + + ", userName='" + userName + '\'' + + ", password='" + password + '\'' + + ", email='" + email + '\'' + + ", nickname='" + nickname + '\'' + + ", regTime='" + regTime + '\'' + + '}'; + } +} \ No newline at end of file diff --git a/spring-boot-redis/src/main/java/com/neo/web/UserController.java b/spring-boot-redis/src/main/java/com/neo/web/UserController.java new file mode 100644 index 0000000..0447fd1 --- /dev/null +++ b/spring-boot-redis/src/main/java/com/neo/web/UserController.java @@ -0,0 +1,33 @@ +package com.neo.web; + +import org.springframework.cache.annotation.Cacheable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.neo.model.User; + +import javax.servlet.http.HttpSession; +import java.util.UUID; + +@RestController +public class UserController { + + @RequestMapping("/getUser") + @Cacheable(value="user-key") + public User getUser() { + User user=new User("aa@126.com", "aa", "aa123456", "aa","123"); + System.out.println("若下面没出现“无缓存的时候调用”字样且能打印出数据表示测试成功"); + return user; + } + + + @RequestMapping("/uid") + String uid(HttpSession session) { + UUID uid = (UUID) session.getAttribute("uid"); + if (uid == null) { + uid = UUID.randomUUID(); + } + session.setAttribute("uid", uid); + return session.getId(); + } +} \ No newline at end of file diff --git a/spring-boot-redis/src/main/resources/application.properties b/spring-boot-redis/src/main/resources/application.properties new file mode 100644 index 0000000..2d4d7e8 --- /dev/null +++ b/spring-boot-redis/src/main/resources/application.properties @@ -0,0 +1,17 @@ +# REDIS +# Redis\u6570\u636E\u5E93\u7D22\u5F15\uFF08\u9ED8\u8BA4\u4E3A0\uFF09 +spring.redis.database=0 +# Redis\u670D\u52A1\u5668\u5730\u5740 +spring.redis.host=localhost +# Redis\u670D\u52A1\u5668\u8FDE\u63A5\u7AEF\u53E3 +spring.redis.port=6379 +# Redis\u670D\u52A1\u5668\u8FDE\u63A5\u5BC6\u7801\uFF08\u9ED8\u8BA4\u4E3A\u7A7A\uFF09 +spring.redis.password= +# \u8FDE\u63A5\u6C60\u6700\u5927\u8FDE\u63A5\u6570\uFF08\u4F7F\u7528\u8D1F\u503C\u8868\u793A\u6CA1\u6709\u9650\u5236\uFF09 \u9ED8\u8BA4 8 +spring.redis.lettuce.pool.max-active=8 +# \u8FDE\u63A5\u6C60\u6700\u5927\u963B\u585E\u7B49\u5F85\u65F6\u95F4\uFF08\u4F7F\u7528\u8D1F\u503C\u8868\u793A\u6CA1\u6709\u9650\u5236\uFF09 \u9ED8\u8BA4 -1 +spring.redis.lettuce.pool.max-wait=-1 +# \u8FDE\u63A5\u6C60\u4E2D\u7684\u6700\u5927\u7A7A\u95F2\u8FDE\u63A5 \u9ED8\u8BA4 8 +spring.redis.lettuce.pool.max-idle=8 +# \u8FDE\u63A5\u6C60\u4E2D\u7684\u6700\u5C0F\u7A7A\u95F2\u8FDE\u63A5 \u9ED8\u8BA4 0 +spring.redis.lettuce.pool.min-idle=0 diff --git a/spring-boot-redis/src/test/java/com/neo/RedisApplicationTests.java b/spring-boot-redis/src/test/java/com/neo/RedisApplicationTests.java new file mode 100644 index 0000000..c92da71 --- /dev/null +++ b/spring-boot-redis/src/test/java/com/neo/RedisApplicationTests.java @@ -0,0 +1,18 @@ +package com.neo; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class RedisApplicationTests { + + @Test + public void contextLoads() { + System.out.println("hello web"); + } + +} diff --git a/spring-boot-redis/src/test/java/com/neo/TestRedis.java b/spring-boot-redis/src/test/java/com/neo/TestRedis.java new file mode 100644 index 0000000..fe8f86e --- /dev/null +++ b/spring-boot-redis/src/test/java/com/neo/TestRedis.java @@ -0,0 +1,49 @@ +package com.neo; + +import com.neo.model.User; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.data.redis.core.ValueOperations; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.junit4.SpringRunner; + +import java.util.concurrent.TimeUnit; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class TestRedis { + + @Autowired + private StringRedisTemplate stringRedisTemplate; + + @Autowired + private RedisTemplate redisTemplate; + + @Test + public void test() throws Exception { + stringRedisTemplate.opsForValue().set("aaa", "111"); + Assert.assertEquals("111", stringRedisTemplate.opsForValue().get("aaa")); + } + + @Test + public void testObj() throws Exception { + User user=new User("aa@126.com", "aa", "aa123456", "aa","123"); + ValueOperations operations=redisTemplate.opsForValue(); + operations.set("com.neox", user); + operations.set("com.neo.f", user,1, TimeUnit.SECONDS); + Thread.sleep(1000); + //redisTemplate.delete("com.neo.f"); + boolean exists=redisTemplate.hasKey("com.neo.f"); + if(exists){ + System.out.println("exists is true"); + }else{ + System.out.println("exists is false"); + } + // Assert.assertEquals("aa", operations.get("com.neo.f").getUserName()); + } +} \ No newline at end of file