springboot中操作redis的步骤到完全实践

 更新时间:2025年08月26日 09:07:36   作者:GG Bond @  
本文介绍Spring Boot操作Redis的步骤到完全实践,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

springboot中操作redis的步骤

环境搭建

1,在pom.xml文件中导入SpringbootDataReedis的maven坐标

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

2,配置redis数据源
在aoolication.yml文件中添加如下代码:

spring:
	redis:
	    host: localhost
	    port: 6379
	    password: 123456
	    database: 10

解释说明:
database:指定使用Redis的哪个数据库,Redis服务启动后默认有16个数据库,编号分别是从0到15。
可以通过修改Redis配置文件来指定数据库的数量。

3,编写配置类,创建RedisTemplate对象、

@Configuration
@Slf4j
public class RedisConfiguration {
    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
        log.info("开始创建redis模板对象...");
        RedisTemplate redisTemplate = new RedisTemplate();
        //设置redis的连接工厂对象
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        //设置redis key的序列化器
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        return redisTemplate;
    }
}

解释说明:

当前配置类不是必须的,因为 Spring Boot 框架会自动装配 RedisTemplate 对象,但是默认的key序列化器为
JdkSerializationRedisSerializer,导致我们存到Redis中后的数据和原始数据有差别,故设置为
StringRedisSerializer序列化器。

4,通过

RedisTemplate对象操作Redis.可以在test下新建测试类

@SpringBootTest
public class SpringDataRedisTest {
    @Autowired
    private RedisTemplate redisTemplate;
    @Test
    public void testRedisTemplate(){
        System.out.println(redisTemplate);
        //string数据操作
        ValueOperations valueOperations = redisTemplate.opsForValue();
        //hash类型的数据操作
        HashOperations hashOperations = redisTemplate.opsForHash();
        //list类型的数据操作
        ListOperations listOperations = redisTemplate.opsForList();
        //set类型数据操作
        SetOperations setOperations = redisTemplate.opsForSet();
        //zset类型数据操作
        ZSetOperations zSetOperations = redisTemplate.opsForZSet();
    }
}

运行测试类:

说明RedisTemplate对象注入成功,并且通过该RedisTemplate对象获取操作5种数据类型相关对象。

上述环境搭建完毕后,接下来,我们就来具体对常见5种数据类型进行操作。

    @Autowired
    private RedisTemplate redisTemplate;
    /*
    * 测试String类型数据
    * */
    @Test
    public void testString(){
        //string类型的数据操作方法,对应的Redis操作命令为set和get
        //set,get,setex,setnx
        redisTemplate.opsForValue().set("test","123");
        redisTemplate.opsForValue().get("test");
        //setex方法 设置过期时间,单位为秒
        redisTemplate.opsForValue().set("test","123",5, TimeUnit.SECONDS);
        //setIfAbsent,只有在键不存在时才设置值,返回true表示成功设置了值,false表示没有设置
        redisTemplate.opsForValue().setIfAbsent("test1","123");
        redisTemplate.opsForValue().setIfAbsent("test1",2);
    }
    /**
     * 操作哈希类型的数据
     */
    @Test
    public void testHash(){
        //hset hget hdel hkeys hvals
        HashOperations hashOperations = redisTemplate.opsForHash();
        hashOperations.put("100","name","tom");
        hashOperations.put("100","age","20");
        String name = (String) hashOperations.get("100", "name");
        System.out.println(name);
        Set keys = hashOperations.keys("100");
        System.out.println(keys);
        List values = hashOperations.values("100");
        System.out.println(values);
        hashOperations.delete("100","age");
    }
    /**
     * 操作列表类型的数据
     */
    @Test
    public void testList(){
        //lpush lrange rpop llen
        ListOperations listOperations = redisTemplate.opsForList();
        //lpush命令向列表左侧插入元素,rpush命令向列表右侧插入元素
        listOperations.leftPushAll("mylist","a","b","c");
        listOperations.leftPush("mylist","d");
        //lrange命令获取列表中指定区间的元素,0表示第一个元素,-1表示最后一个元素
        List mylist = listOperations.range("mylist", 0, -1);
        System.out.println(mylist);
        //rpop命令从列表右侧弹出元素
        listOperations.rightPop("mylist");
        //llen命令获取列表的长度
        Long size = listOperations.size("mylist");
        System.out.println(size);
    }
    /**
     * 操作集合类型的数据
     */
    @Test
    public void testSet(){
        //sadd smembers scard sinter sunion srem
        SetOperations setOperations = redisTemplate.opsForSet();
        //sadd命令向集合中添加元素,smember命令获取集合中的所有元素
        setOperations.add("set1","a","b","c","d");
        setOperations.add("set2","a","b","x","y");
        Set members = setOperations.members("set1");
        System.out.println(members);
        //scard命令获取集合中元素的数量
        Long size = setOperations.size("set1");
        System.out.println(size);
        // sinter命令获取两个集合的交集,sunion命令获取两个集合的并集
        Set intersect = setOperations.intersect("set1", "set2");
        System.out.println(intersect);
        // sunion命令获取两个集合的并集
        Set union = setOperations.union("set1", "set2");
        System.out.println(union);
        // srem 命令从 集合中移除指定的元素。
        setOperations.remove("set1","a","b");
    }
    /**
     * 操作有序集合类型的数据
     */
    @Test
    public void testZset(){
        //zadd zrange zincrby zrem
        ZSetOperations zSetOperations = redisTemplate.opsForZSet();
        //zadd 命令像有序集合中添加元素, 
        zSetOperations.add("zset1","a",10);
        zSetOperations.add("zset1","b",12);
        zSetOperations.add("zset1","c",9);
        //zrange命令获取有序集合中指定区间的元素,0表示第一个元素,-1表示最后一个元素
        zSetOperations.range("zset1",0,-1);
        Set zset1 = zSetOperations.range("zset1", 0, -1);
        System.out.println(zset1);
        // zincrby命令为有序集合中的元素增加指定的分数值,并返回增加后的分数值
        zSetOperations.incrementScore("zset1","c",10);
        //zrem命令从有序集合中移除指定的元素
        zSetOperations.remove("zset1","a","b");
    }
    /**
     * 通用命令操作
     */
    @Test
    public void testCommon(){
        //keys exists type del
        //keys命令获取所有键,exists命令判断指定的键是否存在,type命令获取指定键的数据类型,del命令删除指定的键
        Set keys = redisTemplate.keys("*");
        System.out.println(keys);
        Boolean name = redisTemplate.hasKey("name");
        Boolean set1 = redisTemplate.hasKey("set1");
        for (Object key : keys) {
            DataType type = redisTemplate.type(key);
            System.out.println(type.name());
        }
        redisTemplate.delete("mylist");
    }

批注:测试之前启动redis,本地启动名命令:按Win + R键,输入cmd,然后按回车键。启动Redis服务器:输入以下命令来启动Redis服务器:redis-server。启动Redis客户端:在另一个命令提示符窗口中输入以下命令来启动Redis客户端:redis-cli

实在不行就去redis安装目录中找图片中的一项双击运行。

到此这篇关于SpringBoot 常用跨域处理方案的文章就介绍到这了,更多相关SpringBoot 跨域处理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot集成Access DB实现数据导入和解析

    SpringBoot集成Access DB实现数据导入和解析

    microsoft office access是由微软发布的关联式数据库管理系统,它结合了 microsoft jet database engine 和 图形用户界面两项特点,是一种关系数据库工具,本文给大家介绍了SpringBoot集成Access DB实现数据导入和解析,需要的朋友可以参考下
    2024-11-11
  • java中有关构造方法中的输出

    java中有关构造方法中的输出

    这篇文章主要介绍了java中有关构造方法中的输出,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • Spring Boot通过Junit实现单元测试过程解析

    Spring Boot通过Junit实现单元测试过程解析

    这篇文章主要介绍了Spring Boot通过Junit实现单元测试过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • SpringBoot事务钩子函数的使用方式

    SpringBoot事务钩子函数的使用方式

    本文介绍了SpringBoot中事务钩子函数的使用方式,包括常见场景、使用方式等,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-11-11
  • 基于Java实现的Dijkstra算法示例

    基于Java实现的Dijkstra算法示例

    这篇文章主要介绍了基于Java实现的Dijkstra算法示例,一个比较典型的算法示例,需要的朋友可以参考下
    2014-07-07
  • java中的export方法实现导出excel文件

    java中的export方法实现导出excel文件

    这篇文章主要介绍了java中的export方法实现导出excel文件,文章围绕java导出excel文件的相关资料展开详细内容,需要的小伙伴可以参考一下
    2022-03-03
  • springboot多环境(dev、test、prod)配置详解

    springboot多环境(dev、test、prod)配置详解

    这篇文章主要介绍了springboot多环境(dev、test、prod)配置详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-04-04
  • 使用注解@Recover优化丑陋的循环详解

    使用注解@Recover优化丑陋的循环详解

    我们知道在实现一个功能的时候是可以使用不同的代码来实现的,那么相应的不同实现方法的性能肯定也是有差别的,下面这篇文章主要给大家介绍了关于使用注解@Recover优化丑陋的循环的相关资料,需要的朋友可以参考下
    2022-04-04
  • 详解SpringBoot开发使用@ImportResource注解影响拦截器

    详解SpringBoot开发使用@ImportResource注解影响拦截器

    这篇文章主要介绍了详解SpringBoot开发使用@ImportResource注解影响拦截器,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • SpringSecurity在SpringBoot中的自动装配过程

    SpringSecurity在SpringBoot中的自动装配过程

    这篇文章主要介绍了SpringSecurity在SpringBoot中的自动装配过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07

最新评论