Redis二进制存储

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

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语言解析,和平常所说的机器二进制是有区别的。

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

何怀逸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值