我的编程空间,编程开发者的网络收藏夹
学习永远不晚

RedisTemplate的使用与注意事项小结

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

RedisTemplate的使用与注意事项小结

一.什么是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)!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

RedisTemplate的使用与注意事项小结

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

RedisTemplate的使用与注意事项小结

目录一.什么是RedisTemplate二.如何使用RedisTemplateRedisTemplate的API序列化三.StringRedisTemplate一.什么是RedisTemplateRedisTemplate 是一个工具类,
RedisTemplate的使用与注意事项小结
2024-10-22

Vue混合(mixin)的使用与注意事项

Vue混合是一种工具,用于在Vue.js组件之间共享方法、数据和生命周期钩子。它提升了代码的可重用性、模块化和封装性。混合类型分为局部分量混合(只应用于特定组件)和全局组件混合(应用于所有组件)。在使用混合时,需要注意命名冲突、数据覆盖、生命周期钩子顺序、性能影响和调试难度。遵循最佳实践,包括保持简单、避免循环依赖、覆盖测试、谨慎使用全局混合和保持文档。混合的替代方案包括继承、提供器和注入,以及函数式组件。
Vue混合(mixin)的使用与注意事项
2024-04-02

Java方法的返回值及注意事项小结

这篇文章主要介绍了Java方法的返回值及注意事项,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-05-17

使用PostgreSQL注意事项

一、大小写特别敏感大写字段需要用“”引号(pg字段名使用“”,MySQL字段名使用``) ******表名以及字段名如果是小写但是为关键字,比如name,则也需使用"";二、分页limit ${limit} offset ${start} 三、判断条件等号前后
使用PostgreSQL注意事项
2016-07-18

详解Linux下crontab的使用与注意事项

crontab是一个用于设置周期性被执行的指令。其守护进程为crond. crontab分为两种配置模式,一种为用户级的crontab,一种为系统级的crontab,这里我们分开来谈。 用户级crontab用户使用新建循环型工作调度时,使用
2022-06-04

Java中BigDecimal的加减乘除、比较大小与使用注意事项

前言借用《Effactive Java》这本书中的话,float和double类型的主要设计目标是为了科学计算和工程计算。他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。然而,它们没有提供完全精确的结
2023-05-30

Golang Facade模式的使用技巧与注意事项

使用技巧:1. 理解Facade模式的目的:Facade模式旨在为外部客户端提供一个简单的接口,隐藏系统内部的复杂性。在使用Facade模式时,要明确Facade提供的是什么功能,并且不要暴露系统的细节。2. 设计清晰的接口:Facade模
2023-10-20

Android studio与genymotion 的注意事项

genymotion安装与设置 genymotion是和VirtualBox同步安装的,而版本不兼容问题,是最有可能出错的 下载后打不开 如 VirtualBox cannnot start 这个问题首先检查一下genymotion的设置仍
2022-06-06

Springboot中@RequestBody注解使用的注意事项

这篇文章将为大家详细讲解有关Springboot中@RequestBody注解使用的注意事项,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。@RequestBody注解踩坑@RequestBody json
2023-06-29

python executemany的使用及注意事项

使用executemany对数据进行批量插入的话,要注意一下事项:#coding:utf8 conn = MySQLdb.connect(host = “localhost”, user = “root”, passwd = “123456
2022-06-04

单例模式在PHP项目中的使用与注意事项

单例模式是一种常见的设计模式,它用于确保一个类只有一个实例,并提供一个全局的访问点。一、单例模式的使用场景在PHP项目中,单例模式常用于以下情况:数据库连接:在一个项目中,通常只需要一个数据库连接,使用单例模式可以确保只创建一个数据库连接实
2023-10-21

Mybatis-Plus分页的使用与注意事项是什么

这篇文章主要介绍“Mybatis-Plus分页的使用与注意事项是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Mybatis-Plus分页的使用与注意事项是什么”文章能帮助大家解决问题。1.写个
2023-06-30

编程热搜

目录