Redis 使用记录

使用 Redis 很简单,一共分为三步:

1. 安装 Redis

macOS 安装 redis 很简单,按照官网安装说明,使用 Homebrew 安装即可:

bash 复制代码
brew install redis

Windows 安装略微复杂一点,因为我手边没有 Windows 电脑,就不提供安装方法了,教程很多。

2. 启动 Redis

运行以下命令,如果出现下图界面即表示运行成功:

bash 复制代码
redis-server

3. 项目引入 Redis

在项目里使用 redis 的时候,我们借助 ioredis 这个库,安装 ioredis:

bash 复制代码
npm install ioredis

在根目录下新建一个 lib文件夹,在 lib下新建一个名为 redis.js的文件,代码如下:

javascript 复制代码
import Redis from "ioredis";

const redis = new Redis();

const initialData = {
  1702459181837:
    '{"title":"sunt aut","content":"quia et suscipit suscipit recusandae","updateTime":"2023-12-13T09:19:48.837Z"}',
  1702459182837:
    '{"title":"qui est","content":"est rerum tempore vitae sequi sint","updateTime":"2023-12-13T09:19:48.837Z"}',
  1702459188837:
    '{"title":"ea molestias","content":"et iusto sed quo iure","updateTime":"2023-12-13T09:19:48.837Z"}',
};

export async function getAllNotes() {
  const data = await redis.hgetall("notes");
  if (Object.keys(data).length == 0) {
    await redis.hset("notes", initialData);
  }
  return await redis.hgetall("notes");
}

export async function addNote(data) {
  const uuid = Date.now().toString();
  await redis.hset("notes", [uuid], data);
  return uuid;
}

export async function updateNote(uuid, data) {
  await redis.hset("notes", [uuid], data);
}

export async function getNote(uuid) {
  return JSON.parse(await redis.hget("notes", uuid));
}

export async function delNote(uuid) {
  return redis.hdel("notes", uuid);
}

export default redis;

这块代码并不复杂,我们导出了 5 个函数,表示 5 个用于前后端交互的接口,分别是:

  1. 获取所有笔记的 getAllNotes,这里我们做了一个特殊处理,如果为空,就插入 3 条事先定义的笔记数据
  2. 添加笔记的 addNote
  3. 更新笔记的 updateNote
  4. 获取笔记的 updateNote
  5. 删除笔记的 delNote

其中我们使用了 ioredis 的 hash 结构(ioredis 提供了相关写法示例API 说明)。也就是说,我们在 redis 服务器中存储的数据大概长这样:

javascript 复制代码
{
  "1702459181837": '{"title":"sunt aut","content":"quia et suscipit suscipit recusandae","updateTime":"2023-12-13T09:19:48.837Z"}',
  "1702459182837": '{"title":"qui est","content":"est rerum tempore vitae sequi sint","updateTime":"2023-12-13T09:19:48.837Z"}',
  "1702459188837": '{"title":"ea molestias","content":"et iusto sed quo iure","updateTime":"2023-12-13T09:19:48.837Z"}'
}

使用 macOS 的同学可以再下载一个 Medis,用于查看 Redis 中的数据(当然此时 Redis 还没有写入这些数据):

其中,key 值用的是创建笔记时的时间戳,value 值是具体的笔记数据,分为 3 个字段,分别是 titlecontentupdateTime

相关推荐
IT_陈寒4 分钟前
Python开发者的效率革命:这5个技巧让你的代码提速50%!
前端·人工智能·后端
MekoLi2919 分钟前
Spring AI 与 LangChain4j 从入门到精通:Java 后端开发者的 AI 实战手册
后端·面试
树獭叔叔23 分钟前
从RLHF到PPO:让AI学会说人话
后端·aigc·openai
Meepo_haha25 分钟前
创建Spring Initializr项目
java·后端·spring
Memory_荒年26 分钟前
SpringBoot事务源码深度游:从注解到数据库的“奇幻漂流”
java·后端·spring
编码忘我29 分钟前
为什么要用SpringBoot
java·后端
Memory_荒年38 分钟前
SpringBoot事务:从“一键开关”到“踩坑大全”的生存指南
java·后端·spring
PFinal社区_南丞42 分钟前
一文讲透 .trae 文件夹 - Trae IDE 配置指南和最佳实践
后端
段小二1 小时前
Spring AI Agent 完整实战:Function Calling + RAG + Memory + SafeGuard 构建机票助手
后端
编码忘我1 小时前
Spring源码又看了一遍
后端