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
相关推荐
SunnyDays1011几秒前
使用 Java 冻结 Excel 行和列:完整指南
java·冻结excel行和列
喵叔哟10 分钟前
06-ASPNETCore-WebAPI开发
服务器·后端·c#
摇滚侠12 分钟前
在 SpringBoot 项目中,开发工具使用 IDEA,.idea 目录下的文件需要提交吗
java·spring boot·intellij-idea
云姜.17 分钟前
java多态
java·开发语言·c++
李堇19 分钟前
android滚动列表VerticalRollingTextView
android·java
Re.不晚23 分钟前
MySQL进阶之战——索引、事务与锁、高可用架构的三重奏
数据库·mysql·架构
老邓计算机毕设33 分钟前
SSM智慧社区信息化服务平台4v5hv(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架·智慧社区、·信息化平台
泉-java39 分钟前
第56条:为所有导出的API元素编写文档注释 《Effective Java》
java·开发语言
Charlie_lll1 小时前
力扣解题-移动零
后端·算法·leetcode
麦聪聊数据1 小时前
为何通用堡垒机无法在数据库运维中实现精准风控?
数据库·sql·安全·低代码·架构