SpringBoot操作Redis哈希类型

概述

SpringBoot操作Redis复杂对象,通常使用RedisTemplate,直接声明即可。

@Autowired
private RedisTemplate redisTemplate;

put、putAll

  • put设置对象的单个属性值
  • putAll设置对象的多个属性值
//设置user的name、age、sex(本文所有demo都是重新初始化该对象,后面的代码没有再贴出这一块了)
HashMap<String, Object> map = new HashMap<>();
map.put("name", "张三");
map.put("age", "23");
map.put("sex", "男");
redisTemplate.opsForHash().putAll("user", map);
//使用entries获取整个user对象
System.out.println("user:" + redisTemplate.opsForHash().entries("user"));
  • 输出如下:
    user:{sex=男, name=张三, age=23}
  • 再次设置部分属性,其他属性的值不会受到影响
//这次只设置name、age
HashMap<String, Object> map2 = new HashMap<>();
map2.put("name", "李四");
map2.put("age", "24");
redisTemplate.opsForHash().putAll("user", map2);
//获取user对象
System.out.println("user:" + redisTemplate.opsForHash().entries("user"));
  • 输出如下(sex值不变):
    user:{sex=男, name=李四, age=24}

  • 其他用法
//使用put设置单个属性
redisTemplate.opsForHash().put("user", "name", "张三三");
//使用get获取单个属性
System.out.println("user name:" + redisTemplate.opsForHash().get("user", "name"));

putIfAbsent

  • 跟put类似,区别是putIfAbsent只有当属性不存在才生效
//设置birth为当前时间
System.out.println(redisTemplate.opsForHash().putIfAbsent("user", "birth", LocalDateTime.now()));
System.out.println("birth:" + redisTemplate.opsForHash().get("user", "birth"));
//等待2秒
Thread.sleep(2000);
//再次设置birth为当前时间
System.out.println(redisTemplate.opsForHash().putIfAbsent("user", "birth", LocalDateTime.now()));
System.out.println("birth:" + redisTemplate.opsForHash().get("user", "birth"));
  • 输出如下(第2次设置会失败,返回false,birth不变):
    true
    birth:2020-08-17T16:34:22.355
    false
    birth:2020-08-17T16:34:22.355

hasKey

  • 判断指定的属性是否在对象中
System.out.println(redisTemplate.opsForHash().hasKey("user", "name"));;
System.out.println(redisTemplate.opsForHash().hasKey("user", "name2"));;
  • 输出如下:
    true
    false

delete

  • 删除对象的一个或多个属性
//删除age、sex
redisTemplate.opsForHash().delete("user", "age", "sex");
System.out.println("user:" + redisTemplate.opsForHash().entries("user"));
  • 输出如下:
    user:{name=张三}

keys

  • 获取对象的所有属性名
System.out.println(redisTemplate.opsForHash().keys("user"));
  • 输出如下:
    [name, sex, age]

multiGet

  • 获取对象的多个属性值,entries是获取对象所有属性值,两个用法不同
List<String> keyList = new ArrayList<>();
keyList.add("name");
keyList.add("age");
System.out.println(redisTemplate.opsForHash().multiGet("user", keyList));
  • 输出如下:
    [张三, 23]
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

°Fuhb

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

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

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

打赏作者

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

抵扣说明:

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

余额充值