SpringDataRedis简单使用示例代码

下面是“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生成器,避免缓存冲突。

阅读剩余 61%

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringDataRedis简单使用示例代码 - Python技术站

(0)
合作推广
合作推广
分享本页
返回顶部