Springboot/Springcloud项目集成redis进行存取的过程解析
大家都知道Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合),zset(sorted set:有序集合),本文重点给大家介绍Springboot/Springcloud项目集成redis进行存取的过程,需要的朋友参考下吧
目录
一、redis去官网https://redis.io/download下载后解压
二、在项目中添加redis依赖
三、redis的使用
四、字符串类型存取(k,v)
五、存取对象(k,object)
六、List类型(k,list)
七、Hash类型(K,k,value)
八、然后打开redis desktop manager工具可以看到你存储的数据
九、如果想要在单元测试中进行存取
九、实际使用思路
前言:Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合),zset(sorted set:有序集合)。
一、redis去官网https://redis.io/download下载后解压
然后点击里面的redis-server.exe(windows平台)即可正常启动
二、在项目中添加redis依赖
1 2 3 4 | <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> |
三、redis的使用
在需要使用redis的地方通过注解注入,比如在Controller中添加
1 2 3 4 5 6 7 8 9 | @RestController public class RedisController { @Autowired private StringRedisTemplate stringRedisTemplate; //只支持redis五大类型中的字符串类型 @Autowired private RedisTemplate redisTemplate; //支持redis五大类型中的所有类型 } |
四、字符串类型存取(k,v)
1 2 3 4 5 6 | @RequestMapping ( "/setString" ) public Object setString(){ stringRedisTemplate.boundValueOps( "s" ).set( "辣椒" ); //存入 return stringRedisTemplate.boundValueOps( "s" ).get(); //读取 } |
访问接口查看结果:
五、存取对象(k,object)
使用你自己的对象进行存取,我这里使用Person对象
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | package com.star.pojo; import java.io.Serializable; public class Person implements Serializable { private String name; private int age; private String Add; public Person() { } public Person(String name, int age, String add) { this .name = name; this .age = age; Add = add; } public String getName() { return name; } public void setName(String name) { this .name = name; } public int getAge() { return age; } public void setAge( int age) { this .age = age; } public String getAdd() { return Add; } public void setAdd(String add) { Add = add; } @Override public String toString() { return "Person{" + "name='" + name + '\ '' + ", age=" + age + ", Add='" + Add + '\ '' + '}' ; } } Person.java |
1 2 3 4 5 6 7 | @RequestMapping ( "/setPerson" ) public Object setPerson(){ Person person = new Person( "鱼er" , 151 , "北京" ); redisTemplate.boundValueOps( "p" ).set(person); //存入 return redisTemplate.boundValueOps( "p" ).get(); //读取 } |
六、List类型(k,list)
1 2 3 4 5 6 7 8 9 10 11 | @RequestMapping ( "/setList" ) public List<String> setListRedis(){ List<String> list= new ArrayList<>(); list.add( "手头" ); list.add( "苹果" ); list.add( "辣椒" ); this .redisTemplate.boundValueOps( "listk" ).set(list); //存入 return (List<String>) this .redisTemplate.boundValueOps( "listk" ).get(); //读取 } |
七、Hash类型(K,k,value)
1 2 3 4 5 6 7 8 9 10 11 | @RequestMapping ( "/setHash" ) public List<String> setHash(){ List<String> list= new ArrayList<>(); list.add( "大书" ); list.add( "酸菜" ); list.add( "鸡蛋" ); this .redisTemplate.boundHashOps( "thing" ).put( "h" ,list); //存入 return (List<String>) this .redisTemplate.boundHashOps( "thing" ).get( "h" ); //读取 } |
八、然后打开redis desktop manager工具可以看到你存储的数据
其安装及连接方式不用多说,基本是个人都会,实在不会可以去这里瞧瞧。
九、如果想要在单元测试中进行存取
添加测试依赖,Junit必须4.12以上
1 2 3 4 5 6 7 8 9 10 11 | <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version> 4.12 </version> <scope>test</scope> </dependency> |
在要进行存取的类上添加注解@RunWith、@SpringBootTest,意思是启动单元测试时启动当前项目的启动类,因为启动类里面的@SpringBootApplication里面包含了包扫描@ComponentScan,不然注入StringRedisTemplate或RedisTemplate时注入失败报空指针,当然也可以在启动类里面返回new StringRedisTemplate或new RedisTemplate并且加注解@Bean的方式处理注入失败问题,这里直接通过加注解的方式处理。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | @RunWith (value = SpringJUnit4ClassRunner. class ) //RedisApp为启动类名字 @SpringBootTest (classes = {RedisApp. class }) public class RedisAppTest { @Autowired private StringRedisTemplate stringRedisTemplate; @Autowired private RedisTemplate redisTemplate; @Test public void setStringRedis(){ this .stringRedisTemplate.boundValueOps( "name2" ).set( "熊大" ); System.out.println( "ok" ); } @Test public void getStringRedis(){ String name = this .stringRedisTemplate.boundValueOps( "name2" ).get(); System.out.println( "ok:" +name); } } |
在redis desktop manager工具中可以看到存储成功了,在控制台也可以读取
九、实际使用思路
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | @Autowired private RedisTemplate redisTemplate; /** * 首次访问时,如果redis没有数据,就访问数据库,然后把访问到的数据存到redis * 后续访问时,直接查询redis */ @Override public List<Person> findByPersonId(Long id) { // 先查看缓存中有没有 List<Person> list = (List<Person>) redisTemplate.boundValueOps(id).get(); if (list== null ){ System.out.println( "redis中没有,开始从数据库中获取" ); ......... //查询数据库得到List<Person> list =xxxxxx; redisTemplate.boundValueOps(id).set(list); //将从数据库查到的数据添加到redis中以备下次查找 } else { System.out.println( "redis中存在,list是直接从缓存中获取的,没查数据库" ); } return list; } |
到此这篇关于Springboot/Springcloud项目中集成redis进行存取的文章就介绍到这了
原文链接:https://www.cnblogs.com/smiles365/p/15236896.html