Redis是用C语言开发的一个高性能键值对数据库,可用于数据缓存,主要用于处理大量数据的高访问负载。
1.用于缓存数据库中经常查询的表,2.缓存业务中需要存储的临时数据,3.用作消息列队和一些数据排行榜.4.模拟Session,在soa架构中存储一些全局变量.
在这里简单记录存储临时数据以及设置过期时间
1.导入pom坐标
<!--redis依赖配置
-->
<dependency>
<groupId>org
.springframework
.boot
</groupId
>
<artifactId>spring
-boot
-starter
-data
-redis
</artifactId
>
</dependency
>
2.更改application.yml配置文件
spring
:
datasource
:
url
: jdbc
:mysql
://localhost
:3306/mall
?useUnicode
=true&characterEncoding
=utf
-8&serverTimezone
=Asia
/Shanghai
username
: root
password
: root
redis
:
host
: localhost # Redis服务器地址
database
: 0 # Redis数据库索引(默认为
0)
port
: 6379 # Redis服务器连接端口
password
: # Redis服务器连接密码(默认为空)
jedis
:
pool
:
max
-active
: 8 # 连接池最大连接数(使用负值表示没有限制)
max
-wait
: -1ms # 连接池最大阻塞等待时间(使用负值表示没有限制)
max
-idle
: 8 # 连接池中的最大空闲连接
min
-idle
: 0 # 连接池中的最小空闲连接
timeout
: 3000ms # 连接超时时间(毫秒)
# 自定义redis key
redis
:
key
:
prefix
:
authCode
: "portal:authCode:"
expire
:
authCode
: 120 # 验证码超期时间
3. 编写操作redis工具类
public interface RedisService {
void set(String key
, String value
);
String
get(String key
);
boolean expire(String key
, long expire
);
void remove(String key
);
Long
increment(String key
, long delta
);
}
-----------------------------------------------------------------------------------
@Service
public class RedisServiceImpl implements RedisService {
@Autowired
private StringRedisTemplate stringRedisTemplate
;
@Override
public void set(String key
, String value
) {
stringRedisTemplate
.opsForValue().set(key
, value
);
}
@Override
public String
get(String key
) {
return stringRedisTemplate
.opsForValue().get(key
);
}
@Override
public boolean expire(String key
, long expire
) {
return stringRedisTemplate
.expire(key
, expire
, TimeUnit
.SECONDS
);
}
@Override
public void remove(String key
) {
stringRedisTemplate
.delete(key
);
}
@Override
public Long
increment(String key
, long delta
) {
return stringRedisTemplate
.opsForValue().increment(key
,delta
);
}
}
4.编写验证码工具类
public interface UmsMemberService {
CommonResult
generateAuthCode(String telephone
);
CommonResult
verifyAuthCode(String telephone
, String authCode
);
}
----------------------------------------------------------------
@Service
public class UmsMemberServiceImpl implements UmsMemberService {
@Autowired
private RedisService redisService
;
@Value("${redis.key.prefix.authCode}")
private String REDIS_KEY_PREFIX_AUTH_CODE
;
@Value("${redis.key.expire.authCode}")
private Long AUTH_CODE_EXPIRE_SECONDS
;
@Override
public CommonResult
generateAuthCode(String telephone
) {
StringBuilder sb
= new StringBuilder();
Random random
= new Random();
for (int i
= 0; i
< 6; i
++) {
sb
.append(random
.nextInt(10));
}
redisService
.set(REDIS_KEY_PREFIX_AUTH_CODE
+ telephone
, sb
.toString());
redisService
.expire(REDIS_KEY_PREFIX_AUTH_CODE
+ telephone
, AUTH_CODE_EXPIRE_SECONDS
);
return CommonResult
.success(sb
.toString(), "获取验证码成功");
}
@Override
public CommonResult
verifyAuthCode(String telephone
, String authCode
) {
if (StringUtils
.isEmpty(authCode
)) {
return CommonResult
.failed("请输入验证码");
}
String realAuthCode
= redisService
.get(REDIS_KEY_PREFIX_AUTH_CODE
+ telephone
);
boolean result
= authCode
.equals(realAuthCode
);
if (result
) {
return CommonResult
.success(null
, "验证码校验成功");
} else {
return CommonResult
.failed("验证码不正确");
}
}
}
5.工具类的使用
@Controller
@Api(tags
= "UmsMemberController", description
= "会员登录注册管理")
@RequestMapping("/sso")
public class UmsMemberController {
@Autowired
private UmsMemberService memberService
;
@ApiOperation("获取验证码")
@RequestMapping(value
= "/getAuthCode", method
= RequestMethod
.GET
)
@ResponseBody
public CommonResult
getAuthCode(@RequestParam String telephone
) {
return memberService
.generateAuthCode(telephone
);
}
@ApiOperation("判断验证码是否正确")
@RequestMapping(value
= "/verifyAuthCode", method
= RequestMethod
.POST
)
@ResponseBody
public CommonResult
updatePassword(@RequestParam String telephone
,
@RequestParam String authCode
) {
return memberService
.verifyAuthCode(telephone
,authCode
);
}
}