当前位置:   article > 正文

在spring boot中使用redis(一):集成redis_redisrepository getlist

redisrepository getlist

在考虑如何集成redis之前,首先需要确保你拥有一个已经安装好的redis环境。

1.redis环境安装(Linux版本)

由于redis官方只支持Linux环境,所以如果你想安装官方版本,那么你就需要准备一台安装了Linux系统的服务器(虚拟机)。

redis安装包下载地址:

http://download.redis.io/releases/

下载好安装包后,就可以把安装包放到Linux服务器中,准备安装了。

我使用的是Xftp工具进行文件传输

传输上去之后,先对tar包进行解压,以上图的目录为例

#  cd /usr/soft ---进入压缩包所在目录

#  tar -zxvf redis-3.2.8.tar.gz --解压压缩包

解压完后,路径下就会出现相应文件夹。

#  cd redis-3.2.8 --进入解压获得的文件夹

#  make --编译

编译完成后,在src目录下会出现服务程序redis-server,还有用于测试的客户端程序redis-cli。

#  cd src --进入src文件夹

#  ./redis-server ../redis.conf --开启redis服务(开启后不要关闭黑窗)

现在就可以对redis服务进行访问了。

2.spring boot集成redis

首先需要引入redis依赖:

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-data-redis</artifactId>
  4. </dependency>

此时,spring会自动加载两个bean:

  1. @Bean
  2. @ConditionalOnMissingBean(name = "redisTemplate")
  3. public RedisTemplate<Object, Object> redisTemplate(
  4. RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
  5. RedisTemplate<Object, Object> template = new RedisTemplate<>();
  6. template.setConnectionFactory(redisConnectionFactory);
  7. return template;
  8. }
  9. @Bean
  10. @ConditionalOnMissingBean
  11. public StringRedisTemplate stringRedisTemplate(
  12. RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
  13. StringRedisTemplate template = new StringRedisTemplate();
  14. template.setConnectionFactory(redisConnectionFactory);
  15. return template;
  16. }

其中上面个bean能够操作所有对象,下面个用于操作key和value都是String的内容。

我们可以直接使用下面个bean进行测试。

测试之前先配置下redis全局配置:

在spring下添加如下配置

  1. redis:
  2. #redis数据库索引
  3. database: 0
  4. #redis数据库主机ip
  5. host: 192.168.85.129
  6. #redis服务端口号
  7. port: 6379
  8. #redis服务连接密码
  9. password:
  10. jedis:
  11. pool:
  12. #最大连接数
  13. max-active: 15
  14. #最大等待时间(需要自己写单位)
  15. max-wait: 10000ms
  16. #最大空闲连接
  17. max-idle: 8
  18. #最小空闲连接
  19. min-idle: 3

注:适用于spring boot2.0之后的版本。

接下来编写自定义操作接口:

  1. @Repository
  2. public class RedisRepository {
  3. @Autowired
  4. StringRedisTemplate stringRedisTemplate;
  5. /**
  6. * 用于单对象存储
  7. * @param key
  8. * @param child
  9. * @param time
  10. */
  11. public void add(String key,Child child,long time){
  12. Gson gson = new Gson();
  13. stringRedisTemplate.opsForValue().set(key,gson.toJson(child),time, TimeUnit.MINUTES);
  14. }
  15. /**
  16. * 用于多对象存储
  17. * @param key
  18. * @param list
  19. * @param time
  20. */
  21. public void add(String key, List<Child> list,long time){
  22. Gson gson = new Gson();
  23. stringRedisTemplate.opsForValue().set(key,gson.toJson(list),time, TimeUnit.MINUTES);
  24. }
  25. /**
  26. * 获取单个对象
  27. * @param key
  28. * @return
  29. */
  30. public Child getOne(String key){
  31. String result = stringRedisTemplate.opsForValue().get(key);
  32. if (isNotBlank(result)){
  33. return new Gson().fromJson(result,Child.class);
  34. }
  35. return null;
  36. }
  37. /**
  38. * 获取集合
  39. * @param key
  40. * @return
  41. */
  42. public List<Child> getList(String key){
  43. String result = stringRedisTemplate.opsForValue().get(key);
  44. if (isNotBlank(result)){
  45. return new Gson().fromJson(result,new TypeToken<List<Child>>(){
  46. }.getType());
  47. }
  48. return null;
  49. }
  50. /**
  51. * 删除单条记录
  52. * @param key
  53. */
  54. public void delete(String key){
  55. stringRedisTemplate.opsForValue().getOperations().delete(key);
  56. }
  57. }

如果系统中不能使用Gson对象,可以考虑加入Gson依赖:

  1. <dependency>
  2. <groupId>com.google.code.gson</groupId>
  3. <artifactId>gson</artifactId>
  4. </dependency>

接下来编写测试类进行测试:

  1. @RunWith(SpringRunner.class)
  2. @SpringBootTest
  3. public class RedisTest {
  4. @Autowired
  5. RedisRepository redisRepository;
  6. @Test
  7. public void test(){
  8. Child child = new Child();
  9. child.setName("redisTest");
  10. child.setMotherName("this is motherName");
  11. child.setFatherName("this is fatherName");
  12. child.setAddr("JiNan");
  13. child.setId("1");
  14. child.setSort(1);
  15. String key = "child First";
  16. long time = 100000l;
  17. redisRepository.add(key,child,time);
  18. Child child2 = redisRepository.getOne("child First");
  19. System.out.println(child2.getFatherName());
  20. redisRepository.delete("child First");
  21. List<Child> list = new ArrayList<Child>();
  22. for (int i = 0;i<10;i++){
  23. Child c = new Child();
  24. c.setSort(i);
  25. c.setFatherName("fatherName"+i);
  26. c.setName("name"+i);
  27. c.setMotherName("mother name"+i);
  28. list.add(c);
  29. }
  30. redisRepository.add("childList",list,10000);
  31. List<Child> sList = redisRepository.getList("childList");
  32. for (Child child1:sList){
  33. System.out.println(child1.getFatherName());
  34. }
  35. }
  36. @Before
  37. public void testBefore(){
  38. System.out.println("开始测试啦");
  39. }
  40. @After
  41. public void testAfter(){
  42. System.out.println("结束测试啦");
  43. }
  44. }

然后直接运行即可。

OVER。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/815258
推荐阅读
相关标签
  

闽ICP备14008679号