SpringBoot-Redis操作填坑(目前只用到操作String和List)

30 篇文章 0 订阅
21 篇文章 0 订阅

1.电脑上下载Redis,并运行,这里不多描述

记得用Redis之前,实体类都要先实现 Serializable接口!!

2.这里推荐使用单元测试进行具体功能的实现测试(不要一开始就在controller或者service进行测试,那样报错不容易找出来)

    <dependency>
	    <groupId>org.springframework.boot</groupId>
	    <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>	

    <dependency>
	    <groupId>org.springframework.boot</groupId>
	    <artifactId>spring-boot-starter-test</artifactId>
    </dependency>

3.在单元测试类中写如下代码

①默认引入上面的包后,会自动创建一个test包,并创建一个根据项目名生成的测试类里面用来写测试用例,所有的test都需要写在该类下才能运行.

②并且引入上面的包后,SpringBoot会默认生成RedisTemplate<K,V>这个类可以直接使用

RedisTemplate中定义了5种数据结构操作

redisTemplate.opsForValue();  //操作字符串
redisTemplate.opsForHash();   //操作hash
redisTemplate.opsForList();   //操作list
redisTemplate.opsForSet();    //操作set
redisTemplate.opsForZSet();   //操作有序set

 

4.下面是操作List

@RunWith(SpringRunner.class)
@SpringBootTest
public class CampuscommunityApplicationTests {
	@Autowired
        TabService tabService;
	@Resource(name="redisTemplate")
        RedisTemplate<String,List> listRedisTemplate;

	@Test
	public void testList(){
        List<Tab> tabList = (List<Tab>)listRedisTemplate.opsForList().rightPop("tabList");
        if (null==tabList) {
            //如果Redis没有找到这个对应的tabList这个键名,则从数据库查找,并将其放入Redis中,以便下次使用
            tabList = tabService.getTabsByParentId(0);
            listRedisTemplate.opsForList().rightPush("tabList",tabList);
            System.out.println("从数据库查询得到tabList");
        } else {
            System.out.println("从Redis查询得到tabList");
        }
        System.out.println(tabList.toString());
    }
}

注意这里因为我们用的是  RedisTemplate<String,List> 

而RedisTemplate默认是RedisTemplate<String,String>

如果我们想要用我们自定义的类型而不是默认的String类型,我们需要用@Resource注解通过name(name的值也是默认的直接复制我写的就可以)找到那个bean并将其注入

而操作String类型时,因为RedisTemplate默认就是String类型,所以直接AutoWired就可以找到,下面的操作String就是直接AutoWired.

5.操作String

@RunWith(SpringRunner.class)
@SpringBootTest
public class CampuscommunityApplicationTests {
    @Autowired
    UserService userService;
    @Autowired
    RedisTemplate<String,String> stringRedisTemplate;

    @Test
    public void testString(){
        String userStr = stringRedisTemplate.opsForValue().get("userStr");
        if (null==userStr) {
            //如果Redis没有找到这个对应的userStr这个键名,则从数据库查找,并将其放入Redis中,以便下次使用
            userStr = (userService.getUserById(1)).toString();
            stringRedisTemplate.opsForValue().set("userStr",userStr);
            System.out.println("从数据库查询得到userStr");
        } else {
            System.out.println("从Redis查询得到userStr");
        }
        System.out.println(userStr);
    }

6.完整代码

@RunWith(SpringRunner.class)
@SpringBootTest
public class CampuscommunityApplicationTests {
	@Autowired
        TabService tabService;
	@Autowired
        UserService userService;
	@Resource(name="redisTemplate")
        RedisTemplate<String,List> listRedisTemplate;
	@Autowired
        RedisTemplate<String,String> stringRedisTemplate;

	@Test
	public void testList(){
        List<Tab> tabList = (List<Tab>)listRedisTemplate.opsForList().rightPop("tabList");
        if (null==tabList) {
            //如果Redis没有找到这个对应的tabList这个键名,则从数据库查找,并将其放入Redis中,以便下次使用
            tabList = tabService.getTabsByParentId(0);
            listRedisTemplate.opsForList().rightPush("tabList",tabList);
            System.out.println("从数据库查询得到tabList");
        } else {
            System.out.println("从Redis查询得到tabList");
        }
        System.out.println(tabList.toString());
    }

    @Test
    public void testString(){
        String userStr = stringRedisTemplate.opsForValue().get("userStr");
        if (null==userStr) {
            //如果Redis没有找到这个对应的user这个键名,则从数据库查找,并将其放入Redis中,以便下次使用
            userStr = (userService.getUserById(1)).toString();
            stringRedisTemplate.opsForValue().set("userStr",userStr);
            System.out.println("从数据库查询得到userStr");
        } else {
            System.out.println("从Redis查询得到userStr");
        }
        System.out.println(userStr);
    }


}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值