Redis和RedisTemplate快速上手

文章目录

  • 前言
  • [1. 命令行中使用Redis](#1. 命令行中使用Redis)
    • 1.1启动服务和客户端
    • [1.2 数据结构](#1.2 数据结构)
      • [1.2.1 String](#1.2.1 String)
      • [1.2.2 Hash](#1.2.2 Hash)
      • [1.2.3 List](#1.2.3 List)
      • [1.2.4 Set](#1.2.4 Set)
      • [1.2.5 Zset](#1.2.5 Zset)
  • [2 SpringBoot 中 使用StringRedisTemplate](#2 SpringBoot 中 使用StringRedisTemplate)
    • [2.1 配置](#2.1 配置)
    • [2.2 RedisTemplate](#2.2 RedisTemplate)
    • [2.3 StringRedisTemplate](#2.3 StringRedisTemplate)

前言

学习redis命令行使用, SpringBoot中的RedisTemplate使用


1. 命令行中使用Redis

1.1启动服务和客户端

启动redis服务

找到Redis安装目录

bash 复制代码
redis-server.exe redis.windows.conf

启动redis命令行客户端

bash 复制代码
redis-cli

选择数据库0-15

bash 复制代码
select 1

1.2 数据结构

1.2.1 String

bash 复制代码
# 放入, 不带过期时间, 已有就覆盖
set name qinyuan
# 获取
get name
# 带过期时间放入
set name qinyuan ex 20
# 没有才设置成功
set name zhangfalin nx

1.2.2 Hash

存储简单对象, 实用性不如String

1.2.3 List

双向链表, 双端可出可进

用来做抢票

1.2.4 Set

唯一无序

提供交并集操作

1.2.5 Zset

可排序的set

2 SpringBoot 中 使用StringRedisTemplate

2.1 配置

配置redis和lettuce连接池

java 复制代码
spring:
  data:
    redis:
      host: 127.0.0.1
      port: 6379
#      password:  
      database: 1      
      lettuce:
        pool:
          max-active: 10
          max-idle: 10
          min-idle: 2
          max-wait: 3000ms 
        shutdown-timeout: 100ms 

2.2 RedisTemplate

redis的客户端:

除了命令行客户端, 还有RESP图形化客户端, 还有Java客户端

Java客户端常见的有Lettuce和Jedis, Redis启动依赖默认包含lettuce客户端, RedisTemplate 则是对redis的java客户端的更高级的封装

使用模板模式封装:把操作的通用、不变的核心步骤(如 "获取连接→发送命令→处理响应→释放连接→异常处理")封装在父类, 开放可变扩展点:把个性化、可变的部分(如 "执行 SET 命令" 还是 "执行 GET 命令")延迟到子类 / 方法调用时实现, 避免重复编码

2.3 StringRedisTemplate

RedisTemplate本身并不好用,原因如下:

  1. 使用JDK序列化器, 生成乱码,
  2. 只有Java能反序列化

日常用RedisTemplate的子类StringRedisTemplate, 配合FastJson2将对象高效序列化与反序列化

使用流程:

  1. 建议进一步封装为工具类,统一团队的序列化
  2. 编写redis前缀Enum枚举, 动态拼接key
相关推荐
JAVA面经实录91718 小时前
Java企业级工程化·终极完整版背诵手册(无遗漏、全覆盖、面试+落地通用)
java·开发语言·面试
陈随易18 小时前
有生之年系列,Nodejs进程管理pm2 v7.0发布
前端·后端·程序员
Flying pigs~~19 小时前
RAG智慧问答项目
数据库·人工智能·缓存·微调·知识库·rag
misL NITL19 小时前
mysql之如何获知版本
数据库·mysql
许彰午19 小时前
CacheSQL(二):主从复制——OpLog 环形缓冲区与故障自动恢复
java·数据库·缓存
陈随易20 小时前
AI时代,你还在坚持手搓文章吗
前端·后端·程序员
2401_8323655220 小时前
JavaScript中rest参数(...args)取代arguments的优势
jvm·数据库·python
Bat U20 小时前
JavaEE|多线程初阶(七)
java·开发语言
大鱼七成饱21 小时前
VMware NAT模式下固定内网IP(附详细图文)
后端
2301_7796224121 小时前
Go语言怎么用信号量控制并发_Go语言semaphore信号量教程【入门】
jvm·数据库·python