SpringBoot如何使用Redis


写在前面

Spring Boot 系列文章源于 深入实践Spring Boot 一书(感谢作者)。时过境迁,我使用了更新的版本来学习,并且拓展了许多内容(结合文档)。写下系列的博客,一则为了加强记忆,便于回顾,再则也希望帮助到正在学习 Spring Boot 的同学。当然,这也算给自己列下了一个学习计划吧!


一、依赖配置

在 Maven 中加入 spring-boot-starter-data-redis 依赖:

		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
二、连接到 Redis

您可以像注入任何其他Spring Bean一样注入自动配置的RedisConnectionFactoryStringRedisTemplate或普通RedisTemplate实例。默认情况下,实例尝试连接到 localhost:6379的Redis服务器。下面的清单显示了这样一个bean的例子:

@Component
public class MyBean {

	private StringRedisTemplate template;

	@Autowired
	public MyBean(StringRedisTemplate template) {
		this.template = template;
	}

	// ...

}
三、Redis 服务类

Redis 提供了下列几种数据类型可供存取:

  • String:最基本的类型,二进制安全的(可以存出jpg图片),一个 key 对应一个 value
  • hash:键值对集合
  • list:简单的字符串列表
  • set:string 类型的无序集合
  • zset:有序集合,每个元素关联一个double类型的分数进行排序

创建一个 RedisServer 来封装对 Redis 的操作:

@Repository
public class RedisServer {

    @Autowired
    private StringRedisTemplate redisTemplate;

    public void putValue(String key, String value){
        redisTemplate.opsForValue().set(key, value);
    }

    public String getValue(String key){
        return redisTemplate.opsForValue().get(key);
    }
}

上面的代码实现了对 String 类型的存取值操作,其它用法还请参考文档;

由于安装的 Redis 默认是不需要密码验证的,我修改了配置文件,使其需要密码验证,这时默认的配置便不可用,所以需要做改动,加入以下的依赖:

		 <!-- redis client-->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.1</version>
        </dependency>

编写如下配置类:

@Configuration
public class RedisConfiguration {

    @Bean
    public RedisConnectionFactory redisConnectionFactory(){
        RedisStandaloneConfiguration configuration = new RedisStandaloneConfiguration();
        configuration.setPassword("123456");
        RedisConnectionFactory redisConnectionFactory = new JedisConnectionFactory(configuration);
        return redisConnectionFactory;
    }

    @Bean
    public StringRedisTemplate redisTemplate(){
        StringRedisTemplate redisTemplate = new StringRedisTemplate(redisConnectionFactory());
        return redisTemplate;
    }
}
四、Redis Repository

在上面的配置类中加入 开启 redis repository 注解 :

@EnableRedisRepositories

实体类 User :

@Data
@RedisHash("member")
public class Member {

    private String id;
    @Id
    private String name;

    private Integer age;
}

@Id 注解协助 key 的生成,如果没有该注解,key 为 member: id的实际值,为 name 加上该注解后,key 为 member: name的实际值。

该注解的全限定类名为 org.springframework.data.annotation.Id

MemberRepository 类为:

@Repository
public interface MemberRepository extends CrudRepository<Member,String> {
}
四、测试

服务类以及 repository 的测试均在以下的代码中:

@RunWith(SpringRunner.class)
@SpringBootTest
public class RedisTest {

    @Autowired
    private RedisServer redisServer;
    @Autowired
    private MemberRepository memberRepository;

    @Test
    public void stringOps(){
        redisServer.putValue("author", "duofei");
        String author = redisServer.getValue("author");
        Assert.assertNotNull(author);
    }

    @Test
    public void repositoryOps() {
        Member member = new Member();
        member.setId("001");
        member.setName("duofei");
        member.setAge(24);
        memberRepository.save(member);

        Iterable<Member> result = memberRepository.findAll();
        result.forEach(mb -> {
            System.out.println(mb.getId() + " -.- " + mb.getName());
        } );
        Assert.assertNotNull(result);
    }
}

五、总结

由于对 redis 的熟悉程度不够,所以并未进行更多的操作。但脚手架已经好了,不是嘛?

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值