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

Redis 在 Java 中的使用

文章目录

  • 一、为什么要使用 Redis?
  • 二、项目中引入 Redis 依赖
  • 三、配置 application.yml
  • 四、使用 StringRedisTemplate 操作 Redis
  • 五、RedisTemplate 的序列化问题


一、为什么要使用 Redis?

Redis 是一个高性能的 Key-Value 内存数据库,常用于: 数据缓存、分布式锁和排行榜等。
它速度快(内存存储)、支持多种数据结构(String、Hash、List、Set、ZSet),适合高并发场景,是微服务架构下常用的缓存中间件。


二、项目中引入 Redis 依赖

pom.xml 中添加:

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

Spring Boot 默认使用的 Redis 客户端是 Lettuce,性能好、支持异步和响应式编程。


三、配置 application.yml

spring:
  redis:
    host: localhost
    port: 6379
    password: 123456  # Redis中设置的密码,没有就省略
    database: 0       # 默认使用0号数据库

四、使用 StringRedisTemplate 操作 Redis

Spring 提供了两种模板:

  • RedisTemplate<K, V>:支持各种类型的对象,需要配置序列化器。

  • StringRedisTemplate:专门用于操作字符串,由默认的序列化器。
    实例代码如下:

@Service
public class RedisService {

    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    // 设置字符串键值
    public void setValue(String key, String value) {
        stringRedisTemplate.opsForValue().set(key, value);
    }

    // 获取字符串键值
    public String getValue(String key) {
        return stringRedisTemplate.opsForValue().get(key);
    }

    // 设置过期时间
    public void setValueWithExpire(String key, String value, long seconds) {
        stringRedisTemplate.opsForValue().set(key, value, Duration.ofSeconds(seconds));
    }

    // 删除 key
    public void delete(String key) {
        stringRedisTemplate.delete(key);
    }
}

五、RedisTemplate 的序列化问题

默认的 RedisTemplate 会使用 JDK 序列化,存入的数据是二进制格式,不直观并且内存占用大,可使用 JSON 序列化:

@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
    RedisTemplate<String, Object> template = new RedisTemplate<>();
    template.setConnectionFactory(factory);
    // JSON 序列化
    Jackson2JsonRedisSerializer<Object> serializer = new Jackson2JsonRedisSerializer<>(Object.class);
    template.setDefaultSerializer(serializer);
    // 设置键的序列化器
    template.setKeySerializer(new StringRedisSerializer());
    // 设置值的序列化器
    template.setValueSerializer(serializer);
    return template;
}

相关文章:

  • C++假期练习
  • 批量改CAD图层颜色——CAD c#二次开发
  • Rocketmq2
  • 250207-MacOS修改Ollama模型下载及运行的路径
  • DHCP Snooping各种场景实验案例
  • 国外注册的商标如何在中国获得保护!
  • 深入理解矩阵乘积的导数:以线性回归损失函数为例
  • Lisp语言的安全协议
  • 计算机网络——VLAN虚拟局域网的概念与基本原理
  • 【百日精通JAVA | SQL篇 | 第四篇】约束
  • C++中的多态和模板
  • 3. go-zero中如何使用redis
  • C#“与AI的奇妙结合”
  • Immutable.js 完全指南:不可变数据的艺术与实践
  • 接口自动化学习五:mock工具使用
  • MyBatis查询语句专题、动态SQL、MyBatis的高级映射及延迟加载
  • Java线程生命周期探秘:六种状态的转换与核心机制
  • 【C语言】内存函数 (续)
  • 模拟算法(一):一维数组模拟
  • HTML零基础入门笔记:狂神版
  • 济南市住房和城乡建设局网站/最新百度快速排名技术
  • 网站建设对促进部门工作的益处/互联网推广营销
  • dw做网站有哪些用处/网络营销企业有哪些公司
  • 如何在b2b网站做外链/360收录提交入口网址
  • 手机微网站建设案例及报告/网站排名靠前方法
  • 亚马逊网站入口/大连中小企业网络营销