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

相关推荐
源代码•宸8 分钟前
Golang原理剖析(Go语言垃圾回收GC)
经验分享·后端·算法·面试·golang·stw·三色标记
无心水23 分钟前
6、Go语言类型判断与转换避坑指南:从类型断言到别名类型全解析
开发语言·后端·golang
张彦峰ZYF24 分钟前
商品供给域完整事件风暴(Event Storming)清单
后端·商品供给域完整事件风暴
a程序小傲26 分钟前
SpringBoot 秒实现在线 Word 编辑、协同、转化等功能
java·开发语言·spring boot·后端·spring·word·深度优先
a程序小傲34 分钟前
国家电网Java面试被问:API网关的JWT令牌验证和OAuth2.0授权码流程
java·开发语言·spring boot·后端·面试·职场和发展·word
源代码•宸44 分钟前
Leetcode—146. LRU 缓存【中等】(哈希表+双向链表)
后端·算法·leetcode·缓存·面试·golang·lru
小马爱打代码14 小时前
SpringBoot:封装 starter
java·spring boot·后端
STARSpace888815 小时前
SpringBoot 整合个推推送
java·spring boot·后端·消息推送·个推
Marktowin15 小时前
玩转 ZooKeeper
后端
蓝眸少年CY16 小时前
(第十二篇)spring cloud之Stream消息驱动
后端·spring·spring cloud