# 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);