SpringBoot整合Redis及简单使用

news/2024/7/24 8:38:26 标签: redis, java, spring, spring boot, 后端

SpringBoot整合Redis

文章目录

  • SpringBoot整合Redis
    • 一.Pom文件导入依赖
    • 二.配置application.properties文件
    • 三.新建一个User对象(可省略)
    • 四.简单测试
    • 五.总结

一.Pom文件导入依赖

主要是Redis的依赖,还使用了hutool工具来转Json(可省略)

java"><dependencies>
    <!--Redis-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
    <!--hutool工具-->
    <dependency>
        <groupId>cn.hutool</groupId>
        <artifactId>hutool-all</artifactId>
        <version>5.5.7</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

二.配置application.properties文件

添加ip,端口和使用的数据库号码就好

java">spring.redis.host=192.168.83.166
spring.redis.port=6379
spring.redis.database=6

三.新建一个User对象(可省略)

java">public class User implements Serializable {
    private Integer age;
    private String name;

    @Override
    public String toString() {
        return "User{" +
                "age=" + age +
                ", name='" + name + '\'' +
                '}';
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public User() {
    }
    public User(Integer age, String name) {
        this.age = age;
        this.name = name;
    }
}

四.简单测试

java">@SpringBootTest
class SpringbootRedisApplicationTests {
    @Autowired
    RedisTemplate redisTemplate;

    @Test
    void contextLoads() {
        redisTemplate.opsForValue().set("mykey","heshiyi");
        System.out.println(redisTemplate.hasKey("mykey"));
        System.out.println(redisTemplate.opsForValue().get("mykey"));
        redisTemplate.delete("mykey");
        System.out.println(redisTemplate.hasKey("mykey"));
    }
    /**
     * @auther: 何十一
     * @date: 2020/2/1
     * @Description:测试向Redis中存入对象和取出对象
     */
    @Test
    void ceshi2() throws JsonProcessingException {
        //新建一个对象
        User user = new User(18,"何十一");
        //将对象转为Json
        String userJson = JSONUtil.toJsonStr(user);
        //day对象
        System.out.println(userJson);
        //将对象的Json存到redis
        redisTemplate.opsForValue().set("user",userJson);
        //查看Redis中是否成功存入数据
        System.out.println(redisTemplate.hasKey("user"));
        //从Redis中得到对象强制转为User对象
        String userJson1 = (String) redisTemplate.opsForValue().get("user");
        //打印对象
        System.out.println(userJson1);
        //Json转化为对象实例
        User user1 = JSONUtil.toBean(userJson1, User.class);
        //打印对象
        System.out.println(user1);
    }

    /**
     * @auther: 何十一
     * @date: 2020/2/1
     * @Description:测试Set
     */
    @Test
    void ceshi3() {
        //新建一个对象
        User user = new User(19,"何十一");
        //将对象的Json存到redis
        redisTemplate.opsForSet().add("user_set",user);
        //查看Redis中是否成功存入数据
        System.out.println(redisTemplate.hasKey("user_set"));
        //从Redis中得到对象强制转为User对象
        User userSet = (User) redisTemplate.opsForSet().pop("user_set");
        //打印对象
        System.out.println(userSet);
    }

    /**
     * @auther: 何十一
     * @date: 2020/2/1
     * @Description:redis设置过期时间
     */
    @Test
    void ceshi4()  {
        //将对象的Json存到redis
        redisTemplate.expire("user",10, TimeUnit.SECONDS);
        //查看Redis中是否有数据
        System.out.println(redisTemplate.hasKey("user"));
    }
    /**
     * @auther: 何十一
     * @date: 2020/2/1
     * @Description:设置旧的键值对的值并返回对应的旧的value
     */
    @Test
    void ceshi5()  {
        redisTemplate.opsForValue().set("key","何十一");
        System.out.println("存入的数据:"+redisTemplate.opsForValue().get("key"));

        Object va = redisTemplate.opsForValue().getAndSet("key", "heshiyi");
        System.out.println("修改后返回的数据:"+va);
        System.out.println("修改后的数据:"+redisTemplate.opsForValue().get("key"));
    }

    /**
     * @auther: 何十一
     * @date: 2020/2/1
     * @Description:Redis中List的使用
     */
    @Test
    void ceshi6()  {
        //redisTemplate.opsForList().leftPush("list_key","b");
        //redisTemplate.opsForList().leftPush("list_key","c");
        System.out.println(redisTemplate.opsForList().index("list_key", 1));
        //System.out.println("rightPop数据:"+redisTemplate.opsForList().rightPop("aaa"));
    }
}

五.总结

整合过程其实就是使用SpringBoot给我们准备好的自动配置类,当我们导入spring-boot-starter-data-redis依赖{RedisOperations.class},并且配置{RedisProperties.class}后就可以使用RedisTemplate和StringRedisTemplate。

java">@Configuration(
    proxyBeanMethods = false
)
@ConditionalOnClass({RedisOperations.class})
@EnableConfigurationProperties({RedisProperties.class})
@Import({LettuceConnectionConfiguration.class, JedisConnectionConfiguration.class})
public class RedisAutoConfiguration {
    public RedisAutoConfiguration() {
    }

    @Bean
    @ConditionalOnMissingBean(
        name = {"redisTemplate"}
    )
    public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
        RedisTemplate<Object, Object> template = new RedisTemplate();
        template.setConnectionFactory(redisConnectionFactory);
        return template;
    }

    @Bean
    @ConditionalOnMissingBean
    public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
        StringRedisTemplate template = new StringRedisTemplate();
        template.setConnectionFactory(redisConnectionFactory);
        return template;
    }
}

整合过程比较简单,希望对大家有帮助。

近期文章
Docker安装Mysql以及Mysql的基本操作——入门必看
vue-cli十分钟学习入门笔记――开袋即食
如何判断2的n次方?用四种方式来扒一扒。
关于SpringAOP的三种实现方式你有了解过吗?
八皇后问题详细另类图解-九张图带你了解什么是八皇后问题

http://www.niftyadmin.cn/n/1758205.html

相关文章

Springboot-Aop基于正则表达式和注解实现

Springboot-Aop基于正则表达式和注解实现 文章目录Springboot-Aop基于正则表达式和注解实现一.Aop的基本概念AOP的几个关键词二.Pom文件导入依赖项目结构三.具体实现方式一.使用正则表达式配置切入点a.添加切面b.创建Controller测试c.测试d.结论方式二.使用自定义注解实现a.自定…

单例模式和双重检测锁模式下的相关问题

单例模式 文章目录单例模式单例模式要点方式一&#xff1a;饿汉模式方式二&#xff1a;懒汉模式方式三&#xff1a;静态内部类方式四&#xff1a;枚举类型总结&#xff1a;单例模式要点 ​ 其实单例模式重点有三个&#xff1a;一是某个类只能有一个实例&#xff1b;二是它必须…

四大函数式接口演示代码——>通俗易懂

四大函数式接口演示代码——>通俗易懂 文章目录四大函数式接口演示代码——>通俗易懂函数式接口一&#xff1a;Function用法&#xff1a;提供一个T类对象&#xff0c;返回 R类对象演示代码二&#xff1a;Predicate用法&#xff1a;提供一个T类对象&#xff0c;返回boolea…

Mysql事务的四大特性(ACID)和事务隔离级别

Mysql事务的四大特性(ACID)和事务隔离级别 文章目录Mysql事务的四大特性(ACID)和事务隔离级别一.什么是事务&#xff1f;二.打个比方三.事务的四大特性是什么&#xff1f;四.事务隔离级别有哪些?读未提交(Read Uncommitted)&#xff1a;读提交(Read Committed)&#xff1a;可重…

CentOS7精简版基本配置

CentOS7精简版基本配置 文章目录CentOS7精简版基本配置一&#xff0c;CentOS7下载及环境准备二&#xff0c;静态IP配置三&#xff0c;启动虚拟机四&#xff0c;安装基本工具命令五&#xff0c;总结一&#xff0c;CentOS7下载及环境准备 阿里云镜像下载地址,使用CentOS-7-x86_6…

Java后端开发必备软件下载地址汇总

Java后端开发必备软件下载地址汇总 文章目录Java后端开发必备软件下载地址汇总先记录&#xff0c;用到再加&#xff0c;持续更新&#xff0c;欢迎补充。华为云jdk8OpenJdk小版本IDEA各版本Tomcat各版本Maven各版本Mysql各版本Node.js各版本GitTyporaPostmanCode::Blocks7-zipno…

返回列表的最大值下标_python入门到精通教程06-一文轻松搞懂python列表

列表定义使用中括号[],里面的值可以为任意类型list1 [hello,123,99.99,False]列表特点有序&#xff1a;下标索引元素可修改值可重复列表值访问list[index]:索引从0开始&#xff0c;不能越界list[0]访问第一个值列表新增list.append(value):数组列表末尾新增list.insert(index,…

wdr7300千兆版和百兆版区别_功能更强大 首发享折扣!网易UU加速器推出千兆版UU加速盒...

随着时代的变化&#xff0c;主机游戏已被更多游戏爱好者认可&#xff0c;主机用户数量在逐渐增加。在传统的单机玩法之外&#xff0c;主机游戏的联机玩法&#xff0c;能让玩家们获得更刺激、更有趣的游戏体验。但碍于大部分主机游戏只有外服&#xff0c;国内玩家在联机时&#…