spring boot 笔记(三):配置redis

本文介绍了在Spring Boot中如何进行最简单的Redis配置,包括Maven依赖和YAML配置。通过实例展示了使用StringRedisTemplate和RedisTemplate进行基本类型及复杂类型如Set、Map、List的存储。无需过多冗余配置,即可实现RedisTemplate的操作。

公司最近在spring boot中使用redis,使用的是公司内部开发的redis jar。
为了了解如何在spring boot使用原生的redis模板,笔者将从最简单的例子开始:

最简单的配置

Maven

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-redis</artifactId>
    <version>1.4.2.RELEASE</version>
</dependency>

application.yml(或者application.properties)

spring:
  redis:
    database: 0
    host: 10.60.38.159
    port: 6379
    pool:
      max-active: 8
      max-wait: -1
      max-idle: 8
      min-idle: 0
      timeout: 0

到这里配置就完成了。没错,如果只需要使用redisTemplate的话配置这么多就够了。网上与许多讲解redis的配置文件,都有许多冗余,估计他们都没有亲自试过。

测试1

@Autowired
private StringRedisTemplate stringRedisTemplate;

@Test
public void test1() {
    stringRedisTemplate.opsForValue().append("test","hello redis");
    stringRedisTemplate.expire("test", 300, TimeUnit.SECONDS);

    String test = stringRedisTemplate.opsForValue().get("test");
    System.out.println(test); //输出hello redis
}

上面的例子用于在key中存取基本变量类型或者String,此时应该使用StringRedisTemplate。
其他复杂的值类型,比如Set, Map, List,类等,都应该使用RedisTemplate,例子如下:
测试2

@Autowired
private RedisTemplate redisTemplate;

@Test
public void setString() {
    Map<String, String> map = new HashMap<>();
    map.put("name", "allan");
    map.put("age", "18");
    map.put("sex", "男");
    redisTemplate.opsForHash().putAll("map",map);
    redisTemplate.expire("map",200, TimeUnit.SECONDS);

    Map<String, String> mapRedis = (Map<String, String>)redisTemplate.opsForHash().entries("map");

    for(Map.Entry entry : mapRedis.entrySet()){
        System.out.println(entry.getKey()+" "+entry.getValue());
    }
    System.out.println(mapRedis.size());
}

测试3
在存储类时,需要额外存储类的名字(其实不一定要名字,只是要一个唯一的表示)

@Autowired
private RedisTemplate redisTemplate;

@Test
public void testClass() {
    Address address = new Address();

    redisTemplate.opsForHash().put(Address.OBJECT_KEY, address.id, address);
    redisTemplate.expire(address.id,200, TimeUnit.SECONDS);

    Object add = redisTemplate.opsForHash().get(Address.OBJECT_KEY, address.id);

    if(add instanceof Address){
        Address addr = (Address) add;
        System.out.println(addr.city+":"+addr.street+":"+addr.no);
    }
}

@Test  //另一种存取类对象的方法
public void testClass2() {
    Address address = new Address();
    redisTemplate.opsForValue().set(address.id, address);
    redisTemplate.expire(address.id,200, TimeUnit.SECONDS);
    Object add = redisTemplate.opsForValue().get(address.id);
    if(add instanceof Address){
        Address addr = (Address) add;
        System.out.println(addr.city+":"+addr.street+":"+addr.no);
    }
}

//注意,Address一定要新建一个类用于保存,不要放在测试类中
public class Address implements Serializable {

    public static final String OBJECT_KEY = "ADDRESS";

    public String id;
    public String city;
    public String street;
    public String no;

    public Address(){
        id = "123456789";
        city = "上海市";
        street = "沪南路";
        no = "2199";
    }
}

以上是操作redis的最简单示例。仅仅是使用RedisTemplate 的话并不需要额外的bean配置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值