spring boot整合redis

迷南。 2021-10-09 10:18 433阅读 0赞

Redis 简介

Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。

Redis 与其他 key - value 缓存产品有以下三个特点:

  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  • Redis支持数据的备份,即master-slave模式的数据备份。

Redis 优势

  • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
  • 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
  • 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
  • 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

Redis与其他key-value存储有什么不同?

  • Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。
  • Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。

了解redis后现在开始整合Spring boot和redis了。

第一步:加入依赖

  1. <!--redis-->
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-redis</artifactId>
  5. <version>${boot.version}</version>
  6. </dependency>

第二步:SpringBoot配置文件(application.properties)中配置Redis连接

  1. ########################################################
  2. ###Redis (RedisConfiguration)
  3. ########################################################
  4. spring.redis.database=1
  5. spring.redis.host=127.0.0.1
  6. spring.redis.port=6379
  7. #spring.redis.password=
  8. spring.redis.pool.max-idle=8
  9. spring.redis.pool.min-idle=0
  10. spring.redis.pool.max-active=8
  11. spring.redis.pool.max-wait=-1
  12. spring.redis.timeout=5000

第三步:创建User实体类

  1. package com.hik.bean;
  2. import java.io.Serializable;
  3. import lombok.Data;
  4. import lombok.EqualsAndHashCode;
  5. import lombok.NoArgsConstructor;
  6. @Data
  7. @EqualsAndHashCode(callSuper = false)
  8. @NoArgsConstructor
  9. public class User implements Serializable {
  10. private static final long serialVersionUId = 1L;
  11. private String id;
  12. private String name;
  13. }

第四步:创建RedisController

  1. package com.hik.controller;
  2. import org.springframework.beans.factory.annotation.Autowired;
  3. import org.springframework.web.bind.annotation.RequestMapping;
  4. import org.springframework.web.bind.annotation.RestController;
  5. import com.hik.bean.User;
  6. import com.hik.service.RedisService;
  7. /**
  8. * Created by on 2017/3/1.
  9. */
  10. @RestController
  11. @RequestMapping("/redis")
  12. public class RedisController {
  13. @Autowired
  14. RedisService redisService;
  15. /**
  16. * 设置Str缓存
  17. *
  18. * @param key
  19. * @param val
  20. * @return
  21. */
  22. @RequestMapping("setStr")
  23. public String setStr(String key, String val) {
  24. try {
  25. redisService.setStr(key, val);
  26. return "success";
  27. } catch (Exception e) {
  28. e.printStackTrace();
  29. return "error";
  30. }
  31. }
  32. /**
  33. * 根据key查询Str缓存
  34. *
  35. * @param key
  36. * @return
  37. */
  38. @RequestMapping(value = "getStr")
  39. public String getStr(String key) {
  40. return redisService.getStr(key);
  41. }
  42. /**
  43. * 根据key产出Str缓存
  44. *
  45. * @param key
  46. * @return
  47. */
  48. @RequestMapping(value = "delStr")
  49. public String delStr(String key) {
  50. try {
  51. redisService.del(key);
  52. return "success";
  53. } catch (Exception e) {
  54. return "error";
  55. }
  56. }
  57. /**
  58. * 设置obj缓存
  59. *
  60. * @param key
  61. * @param user
  62. * @return
  63. */
  64. @RequestMapping(value = "setObj")
  65. public String setObj(String key, User user) {
  66. try {
  67. redisService.setObj(key, user);
  68. return "success";
  69. } catch (Exception e) {
  70. e.printStackTrace();
  71. return "error";
  72. }
  73. }
  74. /**
  75. * 获取obj缓存
  76. *
  77. * @param key
  78. * @return
  79. */
  80. @RequestMapping(value = "getObj")
  81. public Object getObj(String key) {
  82. return redisService.getObj(key);
  83. }
  84. /**
  85. * 删除obj缓存
  86. *
  87. * @param key
  88. * @return
  89. */
  90. @RequestMapping(value = "delObj")
  91. public Object delObj(String key) {
  92. try {
  93. redisService.delObj(key);
  94. return "success";
  95. } catch (Exception e) {
  96. e.printStackTrace();
  97. return "error";
  98. }
  99. }
  100. }

第五步:创建RedisController

  1. package com.hik.service;
  2. import org.springframework.beans.factory.annotation.Autowired;
  3. import org.springframework.data.redis.core.RedisTemplate;
  4. import org.springframework.data.redis.core.StringRedisTemplate;
  5. import org.springframework.data.redis.core.ValueOperations;
  6. import org.springframework.stereotype.Service;
  7. import javax.annotation.Resource;
  8. /**
  9. * Created by on 2017/3/1.
  10. */
  11. @Service
  12. public class RedisService {
  13. @Autowired
  14. StringRedisTemplate stringRedisTemplate;
  15. @Resource(name = "stringRedisTemplate")
  16. ValueOperations<String, String> valOpsStr;
  17. @Autowired
  18. RedisTemplate<Object, Object> redisTemplate;
  19. @Resource(name = "redisTemplate")
  20. ValueOperations<Object, Object> valOpsObj;
  21. /**
  22. * 根据指定key获取String
  23. *
  24. * @param key
  25. * @return
  26. */
  27. public String getStr(String key) {
  28. return valOpsStr.get(key);
  29. }
  30. /**
  31. * 设置Str缓存
  32. *
  33. * @param key
  34. * @param val
  35. */
  36. public void setStr(String key, String val) {
  37. valOpsStr.set(key, val);
  38. }
  39. /**
  40. * 删除指定key
  41. *
  42. * @param key
  43. */
  44. public void del(String key) {
  45. stringRedisTemplate.delete(key);
  46. }
  47. /**
  48. * 根据指定o获取Object
  49. *
  50. * @param o
  51. * @return
  52. */
  53. public Object getObj(Object o) {
  54. return valOpsObj.get(o);
  55. }
  56. /**
  57. * 设置obj缓存
  58. *
  59. * @param o1
  60. * @param o2
  61. */
  62. public void setObj(Object o1, Object o2) {
  63. valOpsObj.set(o1, o2);
  64. }
  65. /**
  66. * 删除Obj缓存
  67. *
  68. * @param o
  69. */
  70. public void delObj(Object o) {
  71. redisTemplate.delete(o);
  72. }
  73. }

运行测试:

1.StringRedisTemplate

http://127.0.0.1:8090/redis/setStr?key=aa&val=name

http://127.0.0.1:8090/redis/getStr?key=aa

http://127.0.0.1:8090/redis/delStr?key=aa

2.RedisTemplate

http://127.0.0.1:8090/redis/setObj?key=aa&id=1&name=test

http://127.0.0.1:8090/redis/getObj?key=aa

http://127.0.0.1:8090/redis/delObj?key=aa

以上地址都能通过测试,在这里就不一一截图了

发表评论

表情:
评论列表 (有 0 条评论,433人围观)

还没有评论,来说两句吧...

相关阅读