如今,NoSql数据库的使用已经很广泛了,springboot2.0整合redis是非常容易的,只要简单配置下即可。如下是一个简单的流程。
1、pom.xml加入redis的依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>
2、application.yml中加入redis的配置
集群模式
spring:#redis集群redis:database: 0jedis:pool:max-active: 8max-wait: -1max-idle: 8min-idle: 0timeout: 10000cluster:nodes:- 127.0.0.1:6379
单机模式
spring:#redis集群redis:port: 6379host: 192.168.157.6password: 123456pool:max-active: 8max-wait: -1max-idle: 8min-idle: 0
如果是集权的话,直接在nodes下面添加redis的ip端口即可。
到这,其实已经整理好了,不过我们可以封装一个redis操作的bean,然后那些service要使用的话就直接注入即可。
3、redis操作工具类
package cn.myforever.blog.redis;import org.apache.commons.lang.StringUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.StringRedisTemplate;import org.springframework.stereotype.Service;import java.util.List;import java.util.Map;import java.util.Set;import java.util.concurrent.TimeUnit;/*** 建议全部传string ,就算是对象也直接朱哪位gson传进来即可* @author forever**/@Servicepublic class RedisClusterService {@Autowiredprivate StringRedisTemplate stringRedisTemplate;/*** 设置字符串* @param key* @param str*/public void setString(String key, String str) {this.setObject(key, str, null);}public Boolean setNx(String key, String str) {return stringRedisTemplate.opsForValue().setIfAbsent(key, str);}public Long increment(String key) {return stringRedisTemplate.opsForValue().increment(key,1);}/*** 设置字符串* @param key key* @param str 值* @param time 超时时间,默认是秒*/public void setString(String key, String str,Long time) {this.setObject(key, str, time);}public void setList(String key, List<String> list) {this.setObject(key, list, null);}public void setSet(String key, Set<String> set) {this.setObject(key, set, null);}public void setMap(String key, Map<String,Object> map) {this.setObject(key, map, null);}private void setObject(String key, Object value, Long time) {if (StringUtils.isEmpty(key) || value == null) {return;}if (value instanceof String) {// 存放string类型String stringValue = (String) value;if (time == null) {stringRedisTemplate.opsForValue().set(key, stringValue);} else {stringRedisTemplate.opsForValue().set(key, stringValue, time, TimeUnit.SECONDS);}return;}if (value instanceof List) {// 存放list類型@SuppressWarnings("unchecked")List<String> listValue = (List<String>) value;for (String string : listValue) {stringRedisTemplate.opsForList().leftPush(key, string);}}if (value instanceof Set) {// 存放list類型@SuppressWarnings("unchecked")Set<String> setValues = (Set<String>) value;String[] strs = setValues.toArray(new String[setValues.size()]);stringRedisTemplate.opsForSet().add(key, strs);}if (value instanceof Map) {// 存放list類型@SuppressWarnings("unchecked")Map<String,Object> maps = (Map<String,Object>) value;stringRedisTemplate.opsForHash().putAll(key, maps);}}public void delKey(String key) {stringRedisTemplate.delete(key);}public String getString(String key) {return stringRedisTemplate.opsForValue().get(key);}public List<String> getList(String key,Long start,Long end) {return stringRedisTemplate.opsForList().range(key, start, end);}public String getSet(String key) {return stringRedisTemplate.opsForSet().pop(key);}public Object getMap(String key,String hashKey) {return stringRedisTemplate.opsForHash().get(key, hashKey);}}
然后就到处都可以使用啦,举个例子如下:
...@Servicepublic class CommonServiceImpl implements ICommonService{@Autowiredprivate RedisClusterService redisClusterService;...
结语
因为通过前面几篇博文的学习,相信大家都比较熟悉springboot2.0啦,这里就不需要说那么详细了,毕竟springboot已经帮我们封装好了的。
