官网:https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/reference/htmlsingle/#boot-features-redis
集群文档:https://docs.spring.io/spring-data/data-redis/docs/current/reference/html/#cluster
第一步:相关依赖引入
<dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-data-redisartifactId> dependency>
第二步:相关配置文件配置(也可以不配置,那么就采取 Spring 默认的配置,包括地址端口号)
#=========redis基础配置=========
spring.redis.database=0
spring.redis.host=127.0.0.1
spring.redis.port=6379
# 连接超时时间 单位 ms(毫秒)
spring.redis.timeout=3000
#=========redis线程池设置=========
# 连接池中的最大空闲连接,默认值也是8。
spring.redis.jedis.pool.max-idle=200
#连接池中的最小空闲连接,默认值也是0。
spring.redis.jedis.pool.min-idle=200
# 如果赋值为-1,则表示不限制;pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。
spring.redis.jedis.pool.max-active=2000
# 等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时
spring.redis.jedis.pool.max-wait=1000
第三步:封装 Redis 工具类(多数情况都是封装工具类,方便使用)

package com.haitaiinc.clinicpathservice.utils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.*; import org.springframework.stereotype.Component; import java.io.Serializable; import java.util.List; import java.util.Set; import java.util.concurrent.TimeUnit; @Component public class RedisUtils { @Autowired private RedisTemplate redisTemplate; private static double size = Math.pow(2, 32); /** * 写入缓存 * * @param key * @param offset * @return */ public boolean setBit(String key, long offset, boolean isShow) { boolean result = false; try { ValueOperationsoperations = redisTemplate.opsForValue(); operations.setBit(key, offset, isShow); result = true; } catch (Exception e) { e.printStackTrace(); } return result; } /** * 写入缓存 * * @param key * @param offset * @return */ public boolean getBit(String key, long offset) { boolean result = false; try { ValueOperations operations = redisTemplate.opsForValue(); result = operations.getBit(key, offset); } catch (Exception e) { e.printStackTrace(); } return result; } /** * 写入缓存 * * @param key * @param value * @return */ public boolean set(final String key, Object value) { boolean result = false; try { ValueOperations operations = redisTemplate.opsForValue(); operations.set(key, value); result = true; } catch (Exception e) { e.printStackTrace(); } return result; } /** * 写入缓存设置时效时间 * * @param key * @param value * @return */ public boolean set(final String key, Object value, Long expireTime) { boolean result = false; try { ValueOperations operations = redisTemplate.opsForValue(); operations.set(key, value); redisTemplate.expire(key, expireTime, TimeUnit.SECONDS); result = true; } catch (Exception e) { e.printStackTrace(); } return result; } /** * 批量删除对应的value * * @param keys */ public void remove(final String... keys) { for (String key : keys) { remove(key); } } /** * 删除对应的value * * @param key */ public void remove(final String key) { if (exists(key)) { redisTemplate.delete(key); } } /** * 判断缓存中是否有对应的value * * @param key * @return */ public boolean exists(final String key) { return redisTemplate.hasKey(key); } /** * 读取缓存 * * @param key * @return */ public Object get(final String key) { Object result = null; ValueOperations operations = redisTemplate.opsForValue(); result = operations.get(key); return result; } /** * 哈希 添加 * * @param key * @param hashKey * @param value */ public void hmSet(String key, Object hashKey, Object value) { HashOperations hash = redisTemplate.opsForHash(); hash.put(key, hashKey, value); } /** * 哈希获取数据 * * @param key * @param hashKey * @return */ public Object hmGet(String key, Object hashKey) { HashOperations hash = redisTemplate.opsForHash(); return hash.get(key, hashKey); } /** * 列表添加 * * @param key * @param value */ public void lPush(String key, Object value) { ListOperations list = redisTemplate.opsForList(); list.rightPush(key, value); } /** * 列表获取 * * @param key * @param start * @param end * @return */ public List
第四步:测试使用

package com.haitaiinc.clinicpathservice.controller; import com.haitaiinc.clinicpathservice.entity.UserInfo; import com.haitaiinc.clinicpathservice.utils.JsonUtils; import com.haitaiinc.clinicpathservice.utils.RedisUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.List; @RestController public class TestController { @Autowired RedisUtils redisUtils; @RequestMapping("get_redis") public String getRedis(String key) { String str = (String) redisUtils.get(key); return str; } @RequestMapping("set_redis") public String setRedis(String key, String value) { boolean bool = redisUtils.set(key, value); if(bool){ return "设置成功"; }else{ return "设置失败"; } } @RequestMapping("get_user") public Object getUser() { String str = (String) redisUtils.get("admin"); UserInfo user = JsonUtils.string2Obj(str,UserInfo.class); return user; } @RequestMapping("set_user") public String setUser() { UserInfo userInfo = new UserInfo(); userInfo.setUserId("admin"); userInfo.setUserName("管理员"); String str = JsonUtils.obj2String(userInfo); boolean bool = redisUtils.set("admin", str); if(bool){ return "设置成功"; }else{ return "设置失败"; } } @RequestMapping("get_users") public Object getUser2() { Listlist = (List ) redisUtils.get("user_list"); return list; } @RequestMapping("set_users") public String setUsers() { UserInfo userInfo = new UserInfo(); userInfo.setUserId("admin2"); userInfo.setUserName("管理员2"); UserInfo userInfo2 = new UserInfo(); userInfo2.setUserId("admin3"); userInfo2.setUserName("管理员3"); List list = new ArrayList<>(); list.add(userInfo); list.add(userInfo2); boolean bool = redisUtils.set("user_list", list); if(bool){ return "设置成功"; }else{ return "设置失败"; } } }
Redis 不仅可以 set/get 字符串,对象也是可以直接 set/get,但是需要注意的是,怎样 set,就该怎样 get