下面是“SpringDataRedis简单使用示例代码”的完整攻略:
介绍SpringDataRedis
SpringDataRedis是一个基于Spring Framework的,针对Redis数据库的一套完整解决方案的API框架。它支持基于Spring的编程模型,可轻松使用Spring的依赖注入和事务管理,同时支持多种不同Redis驱动。
示例1:连接Redis
依赖 Maven:
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>2.0.3.RELEASE</version>
</dependency>
Redis配置
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
RedisTemplate<String,Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(factory);
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer());
redisTemplate.setHashValueSerializer(new JdkSerializationRedisSerializer());
return redisTemplate;
}
@Bean
public RedisCacheManager cacheManager(RedisTemplate<String, Object> redisTemplate) {
RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate);
return cacheManager;
}
}
Redis连接测试
@Autowired
private RedisTemplate<String, Object> redisTemplate;
@Test
public void contextLoads() {
redisTemplate.opsForValue().set("test", "test");
String test = (String) redisTemplate.opsForValue().get("test");
System.out.println(test);
}
示例说明:
首先在依赖中引入spring-data-redis,然后在RedisConfig中注入RedisTemplate和RedisCacheManager。
在测试类中,使用RedisTemplate进行操作,完成Redis连接测试:
- 使用opsForValue().set()方法将key为“test”,value为“test”的数据写入Redis中;
- 使用opsForValue().get()方法获取Redis中key为“test”的数据,并输出到控制台。
示例2:缓存
依赖 Maven:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
在方法上添加@Cacheable注解
@Cacheable(cacheNames="studentCache", keyGenerator="myKeyGenerator")
public Student findStudentById(Integer id) {
//此处模拟从数据库中查询数据
System.out.println("find in db, id: " + id);
//此处模拟查询数据耗时
try {
Thread.sleep(3000);
} catch (InterruptedException ie) {
ie.printStackTrace();
}
return new Student(id, "张三" + id, 18);
}
创建keyGenerator类
@Component
public class MyKeyGenerator implements KeyGenerator {
@Override
public Object generate(Object target, Method method, Object... params) {
StringBuilder sb = new StringBuilder();
sb.append(target.getClass().getSimpleName());
sb.append(":");
sb.append(method.getName());
sb.append(":");
for (Object param : params) {
sb.append(param.toString());
}
return sb.toString();
}
}
示例说明:
引入spring-boot-starter-cache,使用@Cacheable注解在方法上实现缓存。
在方法上注解@Cacheable可以让Spring将方法返回结果存储到缓存中,当再次调用该方法时,先从缓存中获取数据,不用再查询数据库,从而提高性能。
这里定义了cacheNames为studentCache,就会使用Redis进行缓存。
使用keyGenerator指定自定义的key生成器,避免缓存冲突。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringDataRedis简单使用示例代码 - Python技术站