接上一篇文章,项目工程搭建参考前一篇文章:

SpringBoot整合Redis,通过程序将对象写入redis_明明就很安静的博客-CSDN博客

上一篇文章是使用的是json方式将对象存入Redis,这里使用二进制的方式存储,上代码:

Redis工具类:

import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.util.concurrent.TimeUnit;

@Component
public class RedisTemplateUtils {

    @Resource
    private RedisTemplate<String, Object> redisTemplate;

    /**
     * 存入String类型
     * @param key
     * @param value
     * @param timeOut
     */
    public void setObject(String key, Object value, Long timeOut){
        redisTemplate.opsForValue().set(key, value);
        if (timeOut != null){
            //设置Redis的key的有效期
            redisTemplate.expire(key, timeOut, TimeUnit.SECONDS);
        }
    }

    /**
     * 获取String类型
     * @param key
     * @return
     */
    public Object getObject(String key){
        return redisTemplate.opsForValue().get(key);
    }
}

这里有一个需要注意的地方:

//注入方式需要是使用@Resource注解,按照name注入,按照类型注入会报错
@Resource
private RedisTemplate<String, Object> redisTemplate;

实体类:

import lombok.Data;

import java.io.Serializable;

@Data
public class User implements Serializable {
    private String name;
    private Integer age;
}

 因为是二进制存储,需要用到序列化和反序列化,所以实体类要实现Serializable接口。

控制层:

import com.example.redis.redistudy.pojo.User;
import com.example.redis.redistudy.util.RedisTemplateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class RedisTemplateController {

    @Autowired
    private RedisTemplateUtils redisTemplateUtils;

    @GetMapping("/addUserSeri")
    public String addUser(){
        User user = new User();
        user.setName("lisi");
        user.setAge(20);
        redisTemplateUtils.setObject("userLis",user, null);
        return "存入成功";
    }

    @GetMapping("/getUserSeri")
    public User getObject(String key){
        System.out.println(key);
        System.out.println(redisTemplateUtils.getObject(key));
        return (User)redisTemplateUtils.getObject(key);
    }
}

启动看一下效果:

        

 最后总结一下Redis存储对象时,是使用json方式还是使用二进制的方式,这是需要分场景的:

        json这种方式的好处是可以跨语言,目前很多语言都可以解析json,另外,如果需要查看Redis存储的对象,使用json的方式能够清晰的看到想要的数据。相反,二进制方式对于其他语言是无法解析的,这里的二进制只能用java语言解析,和平常所说的机器二进制是有区别的。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐