Redis学习(1)

redis基础的数据结构总共有5种,其它的命令和数据结构目前应用不到。他们分别为:
字符串:String
哈希:Hash
列表:List
集合:Set
有序集合:ZSet
每种数据结构的原理和我们平时使用的都差不多,因此这里不讲,如果有需要参考的,具体可以查看redis官网

Java操作Redis最常用的2种数据结构

基础配置

由于本人直接宝塔部署了docker,在docker内pull了一个镜像创建并运行了redis最新版的容器。
因此以后的操作其实都是对服务器内docker容器的操作。

首先是我们需要用到的maven坐标,在spring应用启动项内点击:spring data redisjunit单元测试,fastjson阿里巴巴,lombok即可,再手动加入commons-pool2(跟随redis的东西)具体坐标如下

<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.79</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-launcher</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

然后redis的配置是以配置文件的方式进行更改的:

spring:
  application:
    name: redis-demo
  redis:
    host: localhost # 自己的主机名
    port: 6379 # 6379
    password: password # 密码,如果没设置可以不加
    lettuce: # 这里我们默认使用lettuce
      pool: # 连接池设置
        max-active: 8 # 最大连接
        max-idle: 8 # 最大空闲连接
        min-idle: 0 # 最小空闲连接
        max-wait: 100  # 最大连接等待时间

接下来我们便可以再测试项/新写一个class进行对redis的操作了
提前说一下,由于jdk以及springmvc内的序列化和反序列化方式过于繁琐冗余,因此我们使用阿里巴巴的fastjson,因此,我们引入的对象是StringRedisTemplate而不是RedisTemplate

首先,需要引入并自动装配StringRedisTemplate

@Autowired
private StringRedisTemplate stringRedisTemplate;

然后,我们新建一个测试项来运行他

1.String类型

@Test
    void testString() {
        //插入一条string类型的数据,stringRedisTemplate内操作string的方法名叫opsForValue,然后set与get即可
        stringRedisTemplate.opsForValue().set("test", "it's a test data");
        //读取一条string类型的数据
        Object name = stringRedisTemplate.opsForValue().get("test");
        System.out.println(name);
    }

我们即可在RDM中发现数据已存入服务器内的redis
在这里插入图片描述

当然,对于自定义对象来说,就需要用到我们之前导入的fastjson来序列化和反序列化了

@Test
    void testUserString() {
        //创建对象
        User user1 = new User();
        user1.setName("张三");
        user1.setAge(18);
        //写入数据,使用阿里巴巴的JSON.toJSONString()将自定义对象转化为json格式,再存入value中
        String user1String = JSON.toJSONString(user1);
        stringRedisTemplate.opsForValue().set("user1", user1String);
        //读取数据
        String getUser = stringRedisTemplate.opsForValue().get("user1");
        System.out.println(getUser);
    }

2.hash类型

redis的哈希表相当于一个key可以对应多个字段的值
也就是说,hashname-> hashkey -> hashvalue
在代码中便可以这么写:

@Test
    void testHashString() {
    //put三元素:hashname,hashkey,hashvalue
        stringRedisTemplate.opsForHash().put("userHash", "name", "虎哥");
        stringRedisTemplate.opsForHash().put("userHash", "age", "21");

        Object hashName = stringRedisTemplate.opsForHash().get("userHash", "name");
        //我们也可以使用entries方法来将指定的hashname内所有的键值对取出,即:取出时为一个json格式的map集合
        Map<Object, Object> userHash = stringRedisTemplate.opsForHash().entries("userHash");
        System.out.println(hashName);
        System.out.println(userHash);
    }

在这里插入图片描述

他在RDM中的显示为这样:

在这里插入图片描述

以上即为redis最常用的2种数据结构,在实际项目开发中使用量非常的广泛。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值