Skip to content

Commit 11a72bd

Browse files
committed
update
1 parent 4768759 commit 11a72bd

File tree

7 files changed

+117
-6
lines changed

7 files changed

+117
-6
lines changed

08cache/cache/pom.xml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,18 @@
4949
<groupId>org.springframework.boot</groupId>
5050
<artifactId>spring-boot-starter-cache</artifactId>
5151
</dependency>
52+
<dependency>
53+
<groupId>org.springframework.boot</groupId>
54+
<artifactId>spring-boot-starter-data-redis</artifactId>
55+
</dependency>
56+
<dependency>
57+
<groupId>io.lettuce</groupId>
58+
<artifactId>lettuce-core</artifactId>
59+
</dependency>
60+
<dependency>
61+
<groupId>org.apache.commons</groupId>
62+
<artifactId>commons-pool2</artifactId>
63+
</dependency>
5264
<dependency>
5365
<groupId>net.sf.ehcache</groupId>
5466
<artifactId>ehcache</artifactId>

08cache/cache/src/main/java/io/kimmking/cache/CacheApplication.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@
33
import org.mybatis.spring.annotation.MapperScan;
44
import org.springframework.boot.SpringApplication;
55
import org.springframework.boot.autoconfigure.SpringBootApplication;
6+
import org.springframework.cache.annotation.EnableCaching;
67

78
@SpringBootApplication(scanBasePackages = "io.kimmking.cache")
89
@MapperScan("io.kimmking.cache.mapper")
10+
@EnableCaching
911
public class CacheApplication {
1012

1113
public static void main(String[] args) {
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
package io.kimmking.cache;
2+
3+
import org.springframework.cache.CacheManager;
4+
import org.springframework.cache.annotation.CachingConfigurerSupport;
5+
import org.springframework.cache.interceptor.*;
6+
import org.springframework.context.annotation.Bean;
7+
import org.springframework.context.annotation.Configuration;
8+
import org.springframework.data.redis.cache.RedisCacheConfiguration;
9+
import org.springframework.data.redis.cache.RedisCacheManager;
10+
import org.springframework.data.redis.connection.RedisConnectionFactory;
11+
import org.springframework.data.redis.core.RedisTemplate;
12+
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
13+
import org.springframework.data.redis.serializer.RedisSerializationContext;
14+
import org.springframework.data.redis.serializer.StringRedisSerializer;
15+
16+
import javax.annotation.Resource;
17+
18+
import static org.springframework.data.redis.cache.RedisCacheConfiguration.defaultCacheConfig;
19+
20+
@Configuration
21+
public class CacheConfig extends CachingConfigurerSupport {
22+
23+
@Resource
24+
private RedisConnectionFactory factory;
25+
26+
/**
27+
* 自定义生成redis-key
28+
*
29+
* @return
30+
*/
31+
@Override
32+
@Bean
33+
public KeyGenerator keyGenerator() {
34+
return (o, method, objects) -> {
35+
StringBuilder sb = new StringBuilder();
36+
sb.append(o.getClass().getName()).append(".");
37+
sb.append(method.getName()).append(".");
38+
for (Object obj : objects) {
39+
sb.append(obj.toString());
40+
}
41+
//System.out.println("keyGenerator=" + sb.toString());
42+
return sb.toString();
43+
};
44+
}
45+
46+
@Bean
47+
public RedisTemplate<Object, Object> redisTemplate() {
48+
RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();
49+
redisTemplate.setConnectionFactory(factory);
50+
51+
GenericJackson2JsonRedisSerializer genericJackson2JsonRedisSerializer = new GenericJackson2JsonRedisSerializer();
52+
53+
redisTemplate.setKeySerializer(genericJackson2JsonRedisSerializer);
54+
redisTemplate.setValueSerializer(genericJackson2JsonRedisSerializer);
55+
56+
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
57+
redisTemplate.setHashValueSerializer(genericJackson2JsonRedisSerializer);
58+
return redisTemplate;
59+
}
60+
61+
@Bean
62+
@Override
63+
public CacheResolver cacheResolver() {
64+
return new SimpleCacheResolver(cacheManager());
65+
}
66+
67+
@Bean
68+
@Override
69+
public CacheErrorHandler errorHandler() {
70+
// 用于捕获从Cache中进行CRUD时的异常的回调处理器。
71+
return new SimpleCacheErrorHandler();
72+
}
73+
74+
@Bean
75+
@Override
76+
public CacheManager cacheManager() {
77+
RedisCacheConfiguration cacheConfiguration =
78+
defaultCacheConfig()
79+
.disableCachingNullValues()
80+
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer()));
81+
return RedisCacheManager.builder(factory).cacheDefaults(cacheConfiguration).build();
82+
}
83+
}

08cache/cache/src/main/java/io/kimmking/cache/entity/User.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@
44
import lombok.Data;
55
import lombok.NoArgsConstructor;
66

7+
import java.io.Serializable;
8+
79
@Data
810
@NoArgsConstructor
911
@AllArgsConstructor
10-
public class User {
12+
public class User implements Serializable {
1113
private Integer id;
1214
private String name;
1315
private Integer age;

08cache/cache/src/main/java/io/kimmking/cache/service/UserServiceImpl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@ public class UserServiceImpl implements UserService {
1515
UserMapper userMapper;
1616

1717
// 开启spring cache
18-
@Cacheable(key="#id",value="userCache")
18+
@Cacheable //(key="#id",value="userCache")
1919
public User find(int id) {
2020
return userMapper.find(id);
2121
}
2222

2323
// 开启spring cache
24-
@Cacheable(key="LIST",value="userCache")
24+
@Cacheable //(key="methodName",value="userCache")
2525
public List<User> list(){
2626
return userMapper.list();
2727
}

08cache/cache/src/main/resources/application.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,18 @@ spring:
77
password:
88
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
99
driver-class-name: com.mysql.jdbc.Driver
10+
# cache:
11+
# type: redis
12+
redis:
13+
host: localhost
14+
lettuce:
15+
pool:
16+
max-active: 32
17+
max-wait: 10ms
18+
19+
# type: ehcache
20+
# ehcache:
21+
# config: ehcache.xml
1022

1123
mybatis:
1224
mapper-locations: classpath:mapper/*Mapper.xml

08cache/cache/src/main/resources/mapper/UserMapper.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
<mapper namespace="io.kimmking.cache.mapper.UserMapper">
44

55
<!-- 开启mybatis cache -->
6-
<cache type="org.mybatis.caches.ehcache.LoggingEhcache">
7-
<property name="memoryStoreEvictionPolicy" value="LRU"/>
8-
</cache>
6+
<!-- <cache type="org.mybatis.caches.ehcache.LoggingEhcache">-->
7+
<!-- <property name="memoryStoreEvictionPolicy" value="LRU"/>-->
8+
<!-- </cache>-->
99

1010
<resultMap id="BaseResultMap" type="io.kimmking.cache.entity.User">
1111
<result column="id" jdbcType="INTEGER" property="id" />

0 commit comments

Comments
 (0)