返回顶部
首页 > 资讯 > 数据库 >RedisTemplate的使用与注意事项小结
  • 613
分享到

RedisTemplate的使用与注意事项小结

RedisTemplate使用 2024-10-22 21:10:15 613人浏览 安东尼
摘要

目录一.什么是RedisTemplate二.如何使用RedisTemplateRedisTemplate的api序列化三.StringRedisTemplate一.什么是RedisTemplate RedisTempla

一.什么是RedisTemplate

RedisTemplate 是一个工具类,由 spring 官方提供的方便操作 Redis 数据库的一个工具类,来源于 org.springframework.data.redis.core 包下。其本质属于 Spring-Data 模块下的 Spring-Data-Redis 部分,它提供了从 Spring 应用程序轻松配置和访问 Redis的功能。

RedisTemplate的使用与注意事项小结

Spring-Data-Redis 是通过整合Lettuce和Jedis这俩种Redis客户端产生的,对外则提供了RedisTemplate这样统一的API来供调用者访问。它既支持Luttuce的响应式编程也支持jdk集合的实现。

二.如何使用RedisTemplate

首先要导入相关依赖

        <!--Redis依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <!--连接池依赖-->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
            <version>2.11.1</version>
        </dependency>

导入相关依赖之后,通过配置文件 application.yml 进行配置,由于 RedisTemplate 是整合的Lettuce和Jedis,因此在配置连接池的时候需要进行选择是使用Lettuce还是Jedis(默认是Lettuce)

spring:
  data:
    redis:
      host: Redis所在主机地址
      port: Redis对应端口号默认6379
      passWord: 密码
      lettuce:
        pool:
          max-active: 最大连接数
          max-wait: 等待时长
          max-idle: 最大空闲连接
          min-idle: 最小空闲连接

在配置完成后,通过依赖注入就可以直接使用

    @Autowired
    private RedisTemplate redisTemplate;
    
    @Test
    void testCode() {
        String checheCode = "cheche_code";
        String code = "168901";
        //写入Redis
        redisTemplate.opsForValue().set(checheCode, code);
        //读出Redis
        Object o = redisTemplate.opsForValue().get(checheCode);
        System.out.println("验证码为" + o);
    }

运行结果:

RedisTemplate的使用与注意事项小结

RedisTemplate的API

RedisTemplate 提供了丰富的方法来实现对 Redis 的各种操作,包括但不限于字符串、哈希、列表、集合和有序集合等数据结构的操作。以下是一些常用的 RedisTemplate API:

字符串操作

  • opsForValue().set(key, value): 设置字符串值。
  • opsForValue().get(key): 获取字符串值。
  • opsForValue().incr(key): 字符串值自增。
  • opsForValue().decr(key): 字符串值自减。

哈希操作

  • opsForHash().getOperations().put(key, hashKey, value): 向哈希中添加键值对。
  • opsForHash().getOperations().get(key, hashKey): 获取哈希中的值。
  • opsForHash().getOperations().entries(key): 获取哈希中的所有键值对。

列表操作

  • opsForList().leftPush(key, value): 从列表左侧添加元素。
  • opsForList().rightPush(key, value): 从列表右侧添加元素。
  • opsForList().leftPop(key): 从列表左侧弹出元素。
  • opsForList().rightPop(key): 从列表右侧弹出元素。

集合操作

  • opsForSet().add(key, value): 向集合中添加元素。
  • opsForSet().members(key): 获取集合中的所有元素。
  • opsForSet().remove(key, value): 从集合中移除元素。

有序集合操作

  • opsForZSet().add(key, value, score): 向有序集合中添加元素,并指定分数。
  • opsForZSet().range(key, start, end): 获取有序集合中指定分数范围内的元素。
  • opsForZSet().removeRangeByScore(key, minScore, maxScore): 按分数范围移除有序集合中的元素。

键操作

  • delete(key): 删除键。
  • hasKey(key): 检查键是否存在。
  • keys(pattern): 根据模式匹配获取所有键。

事务

  • multi(): 开启事务。
  • exec(): 提交事务。

发布/订阅

  • convertAndSend(channel, message): 发布消息。
  • subscribe(RedisMessageListenerContainer, MessageListener): 订阅消息。

连接管理

  • getConnectionFactory(): 获取连接工厂。
  • getExecutor(): 获取执行器。

序列化

  • seTKEySerializer(Serializer): 设置键的序列化器。
  • setValueSerializer(Serializer): 设置值的序列化器。

更多操作可以查看官方提供的API文档:RedisTemplate (Spring Data Redis 3.3.2 API)

序列化

我们打开Redis图形化工具查看一下刚才的验证码会发现刚才存入的验证码变成了一堆乱码

RedisTemplate的使用与注意事项小结

这是因为Redis的序列化并没有按照我们预期的进行转化,我们需要自己去重写一个序列化,如下将key设置为String类型、value设置为JSON类型,最后将这个对象交给Spring管理,之后在调用该对象的时候就会自动选择我们配置的这个

@Configuration
public class RedisConfig {
    
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
        //创建RedisTemplate对象
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        //设置连接工厂
        template.setConnectionFactory(connectionFactory);
        //创建jsON序列化工具
        GenericJackson2JsonRedisSerializer jsonSerializer = new GenericJackson2JsonRedisSerializer();
        //设置key的序列化
        template.setKeySerializer(RedisSerializer.string());
        template.setHashValueSerializer(RedisSerializer.string());
        //设置value的序列化
        template.setValueSerializer(jsonSerializer);
        template.setHashValueSerializer(jsonSerializer);
        return template;
    }
}

对于JSON序列化工具,我们也需要引入依赖:

        <!--jackson依赖-->
        <dependency>
            <groupId>com.fasterXML.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.17.1</version>
        </dependency>

我们再次打开测试观察结果:

@SpringBootTest
class RedisDemoApplicationTests {
    
    @Autowired
    private RedisTemplate<String, Object> redisTemplate;
    
    @Test
    void testCode() {
        String checheCode = "cheche_code";
        String code = "168901";
        //写入Redis
        redisTemplate.opsForValue().set(checheCode, code);
        //读出Redis
        Object o = redisTemplate.opsForValue().get(checheCode);
        System.out.println("验证码为" + o);
    }
}

我们可以发现数据已经正常显示出来了

RedisTemplate的使用与注意事项小结

三.StringRedisTemplate

由于存储在 Redis 中的 key 和 value 通常是很常见的 String 类型,Redis模块提供了 RedisConnection 和 RedisTemplate 的扩展,分是 StringRedisConnection 和 StringRedisTemplate,作为字符串操作的解决方案。

开源码我们可以看见对于Key、Value、HashKey、HashValue都是进行String类型的序列化。

RedisTemplate的使用与注意事项小结

因此对于一些复杂类型,如对象在StringRedisTemplate的时候往往需要自己手动序列化将对象转为JSON再存入Redis。

到此这篇关于RedisTemplate的使用与注意事项小结的文章就介绍到这了,更多相关RedisTemplate使用内容请搜索编程网(www.cppcns.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网(www.lsjlt.com)!

您可能感兴趣的文档:

--结束END--

本文标题: RedisTemplate的使用与注意事项小结

本文链接: https://lsjlt.com/news/623947.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 关于BindingResult的使用总结及注意事项
    目录BindingResult总结及注意事项相关的校验API空检查长度检查Booelan检查日期检查其他验证数值检查项目使用中遇到的问题BindingResult作用原理Bindin...
    99+
    2024-04-02
  • Mybatis-Plus分页的使用与注意事项
    目录1.写个Mybatis-plus配置类:2.写接口测试3.注意4.如果你还有查询条件1.Lambda表达式2.普通查询总结1.写个Mybatis-plus配置类: 是通过拦截器实...
    99+
    2024-04-02
  • 使用PostgreSQL注意事项
    一、大小写特别敏感 大写字段需要用“”引号(pg字段名使用“”,MySQL字段名使用``)  ******表名以及字段名如果是小写但是为关键字,比如name,则也需使用""; 二、分页 limit ${limit} offset ...
    99+
    2016-07-18
    使用PostgreSQL注意事项
  • Vue3.2.x中的小技巧及注意事项总结
    目录前言小技巧关于减少.value的使用关于减少import导入语句关于在script setup中声明组件名字注意事项关于响应式的问题模板循环中加不加key的问题总结前言 vue3...
    99+
    2024-04-02
  • Java方法的返回值及注意事项小结
    目录方法的返回值为什么要有带返回值的方法呢?带返回值方法的定义和调用:1.带返回值方法定义的格式:2.带返回值方法的调用格式:练习1:练习2:方法的注意事项:return关键字:方法...
    99+
    2023-05-17
    Java方法的返回值 Java返回值
  • 详解Linux下crontab的使用与注意事项
    crontab是一个用于设置周期性被执行的指令。其守护进程为crond. crontab分为两种配置模式,一种为用户级的crontab,一种为系统级的crontab,这里我们分开来谈。 用户级crontab 用户使用新...
    99+
    2022-06-04
    Linux crontab 使用 Linux crontab
  • BeanUtils.copyProperties使用总结以及注意事项说明
    目录1.前言2.一般使用3.拷贝属性时忽略空值4.使用注意事项(1)5.使用注意事项(2)6.使用注意事项(3)1.前言 开发过程中,讲一个对象的属性和值赋值到另一个对象上,大量使用...
    99+
    2024-04-02
  • java多态注意项小结
    展示多态现象 package test; //父类引用,指向(不同子类)的实例,对同一个实例方法名调用,调用的程序不 //一样。继承是多态得以实现的基础。 public int...
    99+
    2024-04-02
  • Java中BigDecimal的加减乘除、比较大小与使用注意事项
    前言借用《Effactive Java》这本书中的话,float和double类型的主要设计目标是为了科学计算和工程计算。他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。然而,它们没有提供完全精确的结...
    99+
    2023-05-30
    java bigdecimal 加减乘除
  • Golang Facade模式的使用技巧与注意事项
    使用技巧:1. 理解Facade模式的目的:Facade模式旨在为外部客户端提供一个简单的接口,隐藏系统内部的复杂性。在使用Faca...
    99+
    2023-10-20
    Golang
  • Java中Process类的使用与注意事项说明
    目录Process类的使用与注意事项说明1、在项目开发中2、在这里就需要认识一下process类3、来说说今天业务需求[waitfor()]:4、前不久遇到一个奇怪的问题就是ajax...
    99+
    2024-04-02
  • Android studio与genymotion 的注意事项
    genymotion安装与设置 genymotion是和VirtualBox同步安装的,而版本不兼容问题,是最有可能出错的 下载后打不开 如 V...
    99+
    2022-06-06
    Android Studio studio genymotion Android
  • Springboot中@RequestBody注解使用的注意事项
    这篇文章将为大家详细讲解有关Springboot中@RequestBody注解使用的注意事项,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。@RequestBody注解踩坑@RequestBody json...
    99+
    2023-06-29
  • python executemany的使用及注意事项
    使用executemany对数据进行批量插入的话,要注意一下事项: #coding:utf8 conn = MySQLdb.connect(host = “localhost”, user = “roo...
    99+
    2022-06-04
    注意事项 python executemany
  • 使用CDN的一些注意事项
    使用CDN的注意事项有: 选择CDN的时候,为了保障网站的安全性,应该选择安全可靠的提供商。不要为搜索引擎设置指定IP,不然CDN发挥不了作用,会使CDN加速系统就无法给出最佳的加速线路。做域名CNAME解析时,地址后面要加点,不然CDN网...
    99+
    2024-04-02
  • 关于Arrays.sort()使用的注意事项
    目录Arrays.sort()使用注意事项Arrays.sort()平时经常用到:有两种方式Arrays.sort()降序排列问题Arrays.sort()使用注意事项 Java中的...
    99+
    2024-04-02
  • 单例模式在PHP项目中的使用与注意事项
    单例模式是一种常见的设计模式,它用于确保一个类只有一个实例,并提供一个全局的访问点。一、单例模式的使用场景在PHP项目中,单例模式常用于以下情况:数据库连接:在一个项目中,通常只需要一个数据库连接,使用单例模式可以确保只创建一个数据库连接实...
    99+
    2023-10-21
    使用 单例模式 注意事项 PHP项目
  • oracle 11g的安装注意事项总结
    oracle 11g 安装注意事项 1、首先时这个配置安全更新页面,不需要填写电子邮件,下面安全更新也取消候选,否则一旦出现软件更新,会拖慢我们的使用进度 2、在安装选项这里,就选...
    99+
    2024-04-02
  • Mybatis-Plus分页的使用与注意事项是什么
    这篇文章主要介绍“Mybatis-Plus分页的使用与注意事项是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Mybatis-Plus分页的使用与注意事项是什么”文章能帮助大家解决问题。1.写个...
    99+
    2023-06-30
  • C语言指针的使用技巧与注意事项
    C语言指针的应用技巧与注意事项 一、引言 作为一种面向过程的编程语言,C语言具有高效、灵活的特点。而指针则是C语言中一个非常重要的概念,对于理解和掌握C语言来说至关重要。本文将介绍C语...
    99+
    2024-02-26
    传递 动态内存 野指针 注意事项:空指针
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作