# 1、json 序列化时忽略 NULL?
yaml 文件配置:
spring: | |
jackson: | |
default-property-inclusion: non_null # JSON 处理时忽略非空字段 |
# 2、 为什么使用 Session 的方式登录不需要返回登录凭证?
因为使用 session 的话,浏览器第一次访问服务器,服务器会生成一个 key 为 JSESSIONID 的 cookie 的信息并会创建一个 SESSIONID 为 JSESSIONID 的 session。这样下次浏览器请求就会携带 cookie,并携带 JSESSIONID 信息,会找到与之匹配的 session。我们登录成功后需要将信息存储到这个 session 中,下次请求过来就直接从这个 session 中获取就可以了哦。
# 3、在 redis 中存储对象类型,使用哪种数据结构?
可以使用 String 结构,以 JSON 字符串来保存,比较直观:
| KEY | VALUE |
|---|---|
| heima:user:1 | |
| heima:user:2 |
Hash 结构可以将对象中的每个字段独立存储,可以针对单个字段做 CRUD,并且内存占用更少:
| KEY | VALUE | |
|---|---|---|
| field | value | |
| heima:user:1 | name | Jack |
| age | 21 | |
| heima:user:2 | name | Rose |
| age | 18 |
对于取 Hash 信息,使用 stringRedisTemplate.opsForHash ().entries (key); 不能直接设置 hash 类型的过期时间,需要手动设置一下:例如:stringRedisTemplate.expire (tokenKey, LOGIN_USER_TTL, TimeUnit.MINUTES);