SpringBoot入门之Redis访问操作(一)

12 篇文章 0 订阅
3 篇文章 0 订阅

目录

前言

一、连接到redis服务器

1. 在pom.xml中引入依赖

 2. 配置Redis的连接信息

二、不同数据类型的操作

1. 对象操作

2. hash哈希操作

3. List列表操作

4. Set集合操作


前言

SpringBoot提供了对Redis的集成,引入包spring-boot-starter-data-redis即可连接到redis。并提供了RedisTemplate、StringRedisTemplate两个模板bean供我们操作Redis。在需要用的地方注入RedisTemplate或StringRedisTemplate就可以轻松完成操作。

RedisTemplate中的两个泛型都是Object,key默认的序列化方案是JdkSerializationRedisSerializer。

StringRedisTemplate中的两个泛型都是ObjectString,key默认的序列化方案是StringRedisSerializer。

RedisTemplate        可以存储任意数据类型包括对象类型
StringRedisTemplate      只能操作string数据类型.

--template操作5种数据类型
redisTemplate.opsForValue();    //操作String数据结构
redisTemplate.opsForHash();     //操作hash数据结构
redisTemplate.opsForSet();      //操作Set数据结构
redisTemplate.opsForZSet();     //操作Set有序结构
redisTemplate.opsForList();     //操作List集合结构


一、连接到redis服务器

假设你已经建立好SpringBoot工程,并安装好redis数据库。

1. 在pom.xml中引入依赖

        <!--引入redis-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

引入redis起步依赖后,其它什么都不用做就已经能够默认连接到本地redis了。先不打开本地redis服务直接运行测试类,测试类代码:

package com.redisdemo;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.StringRedisTemplate;

@SpringBootTest
class RedisdemoApplicationTests {

    @Autowired
    StringRedisTemplate stringredistemplate;

    @Test
    void contextLoads() {
        System.out.println("启动测试类...............");
        stringredistemplate.opsForValue().set("key1","测试内容abc");
        System.out.println("获得健key1的值:"+stringredistemplate.opsForValue().get("key1"));

    }

}

运行结果如图:报错,错误原因是Unable to connect to localhost:6379,不能连接到本地redis服务。引入redis起步依赖后默认就能连接本地( 127.0.0.1)端口(6379)的redis服务。

 现在启动本地redis服务,再运行测试类,运行结果如图:已经正确获取到键值的内容。

 2配置Redis的连接信息

从springboot2.0开始,spring-boot-starter-data-redis默认使用 lettuce代替Jedis,因此需要把配置文件中redis配置中的jedis改为lettuce,并引入pool2包。

在pom.xml引入包:

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
        </dependency>

在application.yml文件中配置redis连接信息 ,此时redis的显示配置连接信息生效。

# 应用名称
spring:
  application:
  name: redisdemo

  # redis 配置
  redis:
    # redis数据库索引(默认0)
    database: 0
    # redis 服务器地址(IP地址)
    host: 127.0.0.1
    # redis 服务器端口
    port: 6379
    # redis数据库密码(默认为空)
    password:
    # redis连接池最大连接数(使用负数表示没有显示,默认8)
    lettuce:
      pool:
        max-active: 8
        # 连接池最大阻塞等待时间(使用负值表示没有限制,默认-1)
        max-wait: -1
        # 连接池中的最大空闲连接 默认 8
        max-idle: 8
        # 连接池中的最小空闲连接 默认 0
        min-idle: 0

# 应用服务 WEB 访问端口
server:
  port: 8080

再次运行之前的测试类,运行结果如图: 

到此已经正常连接到redis服务器。

二、不同数据类型的操作

1. 对象操作

测试类代码: 

    @Autowired
    private RedisTemplate redisTemplate;//此处变量名写其它的名称会报错

    @Test
    public void objectShow() {
        System.out.println("启动测试类方法..objectShow.............");
        ValueOperations objOps = redisTemplate.opsForValue();
        User user=new User();
        user.setId(1L);
        user.setName("周瑜");
        objOps.set("userkey", user);
        System.out.println("-----获得对象为:"+objOps.get("userkey").toString());
        redisTemplate.delete("userkey");
    }

用户对象类代码:

package com.redisdemo.data;

import lombok.Data;

import java.io.Serializable;

@Data
public class User implements Serializable {
    private Long id;
    private String name;
}

运行结果:

2. hash哈希操作

测试类代码:  

    @Test
    public void HashShow() {
        HashOperations hashOps = redisTemplate.opsForHash();
        hashOps.put("hash","idKey","2");
        hashOps.put("hash","nameKey","诸葛亮");
        System.out.println("id="+hashOps.get("hash", "idKey"));
        System.out.println("name="+hashOps.get("hash", "nameKey"));
    }

运行结果: 

3. List列表操作

 测试类代码:

    @Test
    public void listShow() {
        ArrayList<String> list1=new ArrayList<String>();
        list1.add("1曹操");
        list1.add("2吕布");
        list1.add("3刘备");
        ListOperations<String, String> listOps = redisTemplate.opsForList();
        listOps.leftPush("lkey1",list1.toString());
        System.out.println("获得值1:---"+listOps.leftPop("lkey1"));
        System.out.println("获得值2:==="+listOps.leftPop("lkey1"));

    }

运行结果:

4. Set集合操作

 测试类代码:

    @Test
    public void setShow() {
        SetOperations<String, String> setOps = redisTemplate.opsForSet();
        setOps.add("setkey","关羽");
        setOps.add("setkey","张飞");
        setOps.add("setkey","刘备");
        System.out.println(setOps.members("setkey"));
    }

运行结果:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值