当前位置: 首页 > article >正文

9.Spring 整合 Redis

  • 引入依赖:spring-boot-starter-data-redis
  • 配置 Redis:配置数据库参数、编写配置类,构造 RedisTemplate
  • 访问 Redis:
redisTemplate.opsForValue()
redisTemplate.opsForHash()
redisTemplate.opsForList()
redisTemplate.opsForSet()
redisTemplate.opsForZSet()

1.引入依赖

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

2.配置 Redis

2.1 配置数据库参数

# RedisProperties
spring.redis.database=2
spring.redis.host=localhost
spring.redis.port=6379

2.2 编写配置类,构造 RedisTemplate

在 config 配置包下新建 RedisConfig 配置类:

  •  添加注解 @Configuration
  • 添加 @Bean
  • 返回 RedisTemplate
  • 访问数据库需要创建连接(而连接是由连接工厂创建),注入连接工厂,在方法上声明连接工厂(Spring 容器自动把 Bean 注入)
  • 实例化 Bean
  • 把工厂设置给 Bean:具备了访问数据库能力
  • 配置序列化方式,最终把数据存入 redis 中:设置key的序列化方式(字符串)、设置value的序列化方式(JSON)、设置hash的key的序列化方式、设置hash的value的序列化方式
package com.example.demo.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.RedisSerializer;

@Configuration
public class RedisConfig {

    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        template.setConnectionFactory(factory);

        // 设置key的序列化方式
        template.setKeySerializer(RedisSerializer.string());
        // 设置value的序列化方式
        template.setValueSerializer(RedisSerializer.json());
        // 设置hash的key的序列化方式
        template.setHashKeySerializer(RedisSerializer.string());
        // 设置hash的value的序列化方式
        template.setHashValueSerializer(RedisSerializer.json());

        //触发参数
        template.afterPropertiesSet();
        return template;
    }
}

3.访问 Redis

编写测试类代码:

  • 注入 RedisTemplate
  • 访问字符串
@RunWith(SpringRunner.class)
@SpringBootTest
@ContextConfiguration(classes = DemoApplication.class)
public class RedisTests {

    @Autowired
    private RedisTemplate redisTemplate;

    //String 访问方式
    @Test
    public void testStrings() {
        //声明 key
        String redisKey = "test:count";

        redisTemplate.opsForValue().set(redisKey, 1);

        System.out.println(redisTemplate.opsForValue().get(redisKey));
        System.out.println(redisTemplate.opsForValue().increment(redisKey));
        System.out.println(redisTemplate.opsForValue().decrement(redisKey));
    }
}


http://www.kler.cn/news/147847.html

相关文章:

  • Dockerfile讲解
  • HCIP-九、路由控制
  • Netty实现websocket且实现url传参的两种方式(源码分析)
  • 揭秘论文开题报告写作技巧,全程无忧,附赠技术路线图模板!
  • 解决electron-build打包后运行app报错:cannot find module xxx
  • 汽车功能安全ISO26262
  • VC++、MFC中操作excel时,Range.Cells和Worksheet.Cells的区别是什么?
  • VSCode:修改左侧窗口字体大小
  • Java版企业电子招标采购系统源码—企业战略布局下的采购寻源
  • 【链接MySQL】教你用VBA链接MySQL数据库
  • Java核心知识点整理大全20-笔记
  • pgsql 时区查看和修改
  • springboot(ssm网络相册 在线相册管理系统Java(codeLW)
  • Python项目打包
  • MyBatis mapper文件 中in的写法(postgresql)
  • 【运维】nginx中root和alias区别和作用是啥
  • DBSCAN聚类算法——机器学习(附代码和图解)
  • Spring---IOC与DI
  • 直播场景视频和特效解决方案
  • docker nginx imclude
  • JavaEE(SpringMVC)期末复习(选择+填空+解答)
  • 原生js和jQuery的区别
  • 使用 Lhotse 高效管理音频数据集
  • vue3+ts 依赖注入 provide inject
  • Vue3中调用外部iframe链接方法
  • 6.一维数组——用冒泡法,选择法将5个整数由大到小排序
  • DBeaver连接MySQL提示“Public Key Retrieval is not allowed“问题解决方式
  • UE使用C++通过定时器启用和停用Tick
  • Vue3水印(Watermark)
  • linux防火墙免费版添加UA屏蔽某些垃圾蜘蛛