个人随笔
目录
九、springboot2.0整合redis
2020-09-11 22:33:34

如今,NoSql数据库的使用已经很广泛了,springboot2.0整合redis是非常容易的,只要简单配置下即可。如下是一个简单的流程。

1、pom.xml加入redis的依赖

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

2、application.yml中加入redis的配置

集群模式

  1. spring:
  2. #redis集群
  3. redis:
  4. database: 0
  5. jedis:
  6. pool:
  7. max-active: 8
  8. max-wait: -1
  9. max-idle: 8
  10. min-idle: 0
  11. timeout: 10000
  12. cluster:
  13. nodes:
  14. - 127.0.0.1:6379

单机模式

  1. spring:
  2. #redis集群
  3. redis:
  4. port: 6379
  5. host: 192.168.157.6
  6. password: 123456
  7. pool:
  8. max-active: 8
  9. max-wait: -1
  10. max-idle: 8
  11. min-idle: 0

如果是集权的话,直接在nodes下面添加redis的ip端口即可。
到这,其实已经整理好了,不过我们可以封装一个redis操作的bean,然后那些service要使用的话就直接注入即可。

3、redis操作工具类

  1. package cn.myforever.blog.redis;
  2. import org.apache.commons.lang.StringUtils;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.data.redis.core.StringRedisTemplate;
  5. import org.springframework.stereotype.Service;
  6. import java.util.List;
  7. import java.util.Map;
  8. import java.util.Set;
  9. import java.util.concurrent.TimeUnit;
  10. /**
  11. * 建议全部传string ,就算是对象也直接朱哪位gson传进来即可
  12. * @author forever
  13. *
  14. */
  15. @Service
  16. public class RedisClusterService {
  17. @Autowired
  18. private StringRedisTemplate stringRedisTemplate;
  19. /**
  20. * 设置字符串
  21. * @param key
  22. * @param str
  23. */
  24. public void setString(String key, String str) {
  25. this.setObject(key, str, null);
  26. }
  27. public Boolean setNx(String key, String str) {
  28. return stringRedisTemplate.opsForValue().setIfAbsent(key, str);
  29. }
  30. public Long increment(String key) {
  31. return stringRedisTemplate.opsForValue().increment(key,1);
  32. }
  33. /**
  34. * 设置字符串
  35. * @param key key
  36. * @param str 值
  37. * @param time 超时时间,默认是秒
  38. */
  39. public void setString(String key, String str,Long time) {
  40. this.setObject(key, str, time);
  41. }
  42. public void setList(String key, List<String> list) {
  43. this.setObject(key, list, null);
  44. }
  45. public void setSet(String key, Set<String> set) {
  46. this.setObject(key, set, null);
  47. }
  48. public void setMap(String key, Map<String,Object> map) {
  49. this.setObject(key, map, null);
  50. }
  51. private void setObject(String key, Object value, Long time) {
  52. if (StringUtils.isEmpty(key) || value == null) {
  53. return;
  54. }
  55. if (value instanceof String) {
  56. // 存放string类型
  57. String stringValue = (String) value;
  58. if (time == null) {
  59. stringRedisTemplate.opsForValue().set(key, stringValue);
  60. } else {
  61. stringRedisTemplate.opsForValue().set(key, stringValue, time, TimeUnit.SECONDS);
  62. }
  63. return;
  64. }
  65. if (value instanceof List) {
  66. // 存放list類型
  67. @SuppressWarnings("unchecked")
  68. List<String> listValue = (List<String>) value;
  69. for (String string : listValue) {
  70. stringRedisTemplate.opsForList().leftPush(key, string);
  71. }
  72. }
  73. if (value instanceof Set) {
  74. // 存放list類型
  75. @SuppressWarnings("unchecked")
  76. Set<String> setValues = (Set<String>) value;
  77. String[] strs = setValues.toArray(new String[setValues.size()]);
  78. stringRedisTemplate.opsForSet().add(key, strs);
  79. }
  80. if (value instanceof Map) {
  81. // 存放list類型
  82. @SuppressWarnings("unchecked")
  83. Map<String,Object> maps = (Map<String,Object>) value;
  84. stringRedisTemplate.opsForHash().putAll(key, maps);
  85. }
  86. }
  87. public void delKey(String key) {
  88. stringRedisTemplate.delete(key);
  89. }
  90. public String getString(String key) {
  91. return stringRedisTemplate.opsForValue().get(key);
  92. }
  93. public List<String> getList(String key,Long start,Long end) {
  94. return stringRedisTemplate.opsForList().range(key, start, end);
  95. }
  96. public String getSet(String key) {
  97. return stringRedisTemplate.opsForSet().pop(key);
  98. }
  99. public Object getMap(String key,String hashKey) {
  100. return stringRedisTemplate.opsForHash().get(key, hashKey);
  101. }
  102. }

然后就到处都可以使用啦,举个例子如下:

  1. ...
  2. @Service
  3. public class CommonServiceImpl implements ICommonService{
  4. @Autowired
  5. private RedisClusterService redisClusterService;
  6. ...

结语

因为通过前面几篇博文的学习,相信大家都比较熟悉springboot2.0啦,这里就不需要说那么详细了,毕竟springboot已经帮我们封装好了的。

 392

啊!这个可能是世界上最丑的留言输入框功能~


当然,也是最丑的留言列表

有疑问发邮件到 : suibibk@qq.com 侵权立删
Copyright : 个人随笔   备案号 : 粤ICP备18099399号-2