栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

目录

前言

一、连接到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。


一、连接到redis服务器

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

1. 在pom.xml中引入依赖
        
        
            org.springframework.boot
            spring-boot-starter-data-redis
        

引入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引入包:

        
            org.apache.commons
            commons-pool2
        

在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 list1=new ArrayList();
        list1.add("1曹操");
        list1.add("2吕布");
        list1.add("3刘备");
        ListOperations 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 setOps = redisTemplate.opsForSet();
        setOps.add("setkey","关羽");
        setOps.add("setkey","张飞");
        setOps.add("setkey","刘备");
        System.out.println(setOps.members("setkey"));
    }

运行结果:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1024597.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号