Redis实战--SpringBoot中对Redis数据类型hash的基本操作示例

echo编辑整理,欢迎转载,转载请声明文章来源。欢迎添加echo微信(微信号:t2421499075)交流学习。 百战不败,依不自称常胜,百败不颓,依能奋力前行。——这才是真正的堪称强大!!!


该文章是接上一篇文章《Redis整合SpringBoot示例》的后续,操作用例代码比较多,这里展示核心代码所占篇幅很多,所以单独抽出来写

hash类型在SpringBoot中的使用代码如下

package com.example.echo.redis;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.*;

/**
 * @author XLecho
 * Date 2019/11/9 0009
 * Time 14:35
 */
@SpringBootTest
@RunWith(SpringRunner.class)
public class RedisTypeHashUseTest {

    @Autowired
    private RedisTemplate<String, String> redisTemplate;

    /**
     * 创建一个hash表,并存入键值对
     */
    @Test
    public void testHsetHash() {
        redisTemplate.opsForHash().put("myHash", "name", "echo");
        redisTemplate.opsForHash().put("myHash", "email", "xl_echo@163.com");
        System.out.println(redisTemplate.opsForHash().entries("myHash"));
    }

    /**
     * 在hash表中一次性插入多个元素
     */
    @Test
    public void testHMsetHash() {
        Map<String, String> map = new HashMap<>();
        map.put("name", "echo");
        map.put("email", "xl_echo@163.com");
        map.put("blogName", "xlecho");
        redisTemplate.opsForHash().putAll("myHash", map);
        System.out.println(redisTemplate.opsForHash().entries("myHash"));
    }

    /**
     * 在hash表中批量获取key对应的值
     */
    @Test
    public void testHMgetHash() {
        List<Object> list = new ArrayList<>();
        list.add("name");
        list.add("email");
        list.add("blogName");
        List<Object> myHash = redisTemplate.opsForHash().multiGet("myHash", list);
        myHash.forEach(System.out::println);
    }

    /**
     * 获取hash表中的所有key
     */
    @Test
    public void testHkeysHash() {
        Set<Object> myHash = redisTemplate.opsForHash().keys("myHash");
        myHash.forEach(System.out::println);
    }

    /**
     * 获取hash表中的所有value
     */
    @Test
    public void testHvalsHash() {
        List<Object> myHash = redisTemplate.opsForHash().values("myHash");
        myHash.forEach(System.out::println);
    }

    /**
     * 判断hash表中是否存在name这个key
     */
    @Test
    public void testHexistsHash() {
        Boolean aBoolean = redisTemplate.opsForHash().hasKey("myHash", "name");
        System.out.println(aBoolean);
    }

    /**
     * 删除myHash中的某一个键值对
     */
    @Test
    public void testHdelHash() {
        redisTemplate.opsForHash().delete("myHash", "name");
        System.out.println(redisTemplate.opsForHash().entries("myHash"));
    }

    /**
     * 获取myHash的长度
     */
    @Test
    public void testHlenHash() {
        System.out.println(redisTemplate.opsForHash().size("myHash"));
    }

}

项目源码地址:https://coding.net/u/xlsorry/p/SpringBootRedis/git

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在Springboot项目,可以通过使用Spring Data Redis操作Redis数据库。以下是将Json数据存入Redishash的代码示例: 1. 首先在pom.xml引入Spring Data Redis依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> ``` 2. 在application.properties文件配置Redis连接信息: ```properties spring.redis.host=localhost spring.redis.port=6379 ``` 3. 创建一个RedisTemplate对象,用于操作Redis数据库: ```java @Autowired private RedisTemplate<String, Object> redisTemplate; ``` 4. 将Json数据转换为Map对象,并将Map对象存入Redishash: ```java String jsonStr = "{\"name\":\"张三\",\"age\":18,\"gender\":\"男\"}"; Map<String, String> map = new Gson().fromJson(jsonStr, new TypeToken<Map<String, String>>(){}.getType()); redisTemplate.opsForHash().putAll("person", map); ``` 5. 可以通过以下方式获取Redishash的值: ```java Map<Object, Object> resultMap = redisTemplate.opsForHash().entries("person"); ``` 其,"person"为Redishash键名,可以根据实际情况修改。 需要注意的是,RedisTemplate默认使用JdkSerializationRedisSerializer对数据进行序列化,如果要使用Json数据,需要设置序列化方式为Jackson2JsonRedisSerializer。可以在RedisConfig进行配置: ```java @Configuration public class RedisConfig { @Autowired private RedisTemplate redisTemplate; @Bean public RedisTemplate<String, Object> redisTemplate() { RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(redisConnectionFactory()); redisTemplate.setDefaultSerializer(new Jackson2JsonRedisSerializer<>(Object.class)); redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<>(Object.class)); redisTemplate.setHashKeySerializer(new StringRedisSerializer()); redisTemplate.setHashValueSerializer(new Jackson2JsonRedisSerializer<>(Object.class)); return redisTemplate; } @Bean public RedisConnectionFactory redisConnectionFactory() { return new LettuceConnectionFactory(new RedisStandaloneConfiguration("localhost", 6379)); } } ``` 这样就可以在Springboot项目将Json数据存入Redishash了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

xlecho

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

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

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

打赏作者

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

抵扣说明:

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

余额充值