首页 > 数据库 >前端程序员快速学会 Redis

前端程序员快速学会 Redis

时间:2024-05-27 14:59:41浏览次数:12  
标签:arr uuid 示例 Redis 前端 redis 程序员 客户端

由于在学习 Docker 的过程中,使用到了 Redis ,但是不会,就快速补课一下 Redis,以能会基础使用就够了,不求甚解。由于这篇会使用到 上一篇文章 Docker 入门 (一),没看的可以看看:前端程序员如何学习 Docker(一) - 掘金 (juejin.cn),下面开始 Redis 入门:

什么是 Redis ?

官方说:"Redis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported: Strings, Lists, Sets, Sorted Sets, Hashes, Streams, HyperLogLogs, Bitmaps."

翻译一下:Redis 是一个内存数据库,同时支持持久化到磁盘。其数据模型是键值对,但支持多种类型的值:

  • 字符串(Strings)
  • 列表(Lists)
  • 集合(Sets)
  • 有序集合(Sorted Sets)
  • 哈希(Hashes)
  • 流(Streams)
  • HyperLogLogs :
  • 位图(Bitmaps)

关于数据类型,更多参考文章:redis.io/docs/latest…

Redis 有以下优点: 速度快, 操作简单 , 数据类型丰富 ,可扩展性好, 高可用性

Redis 解决了什么问题?

Redis 的出现解决了传统数据库在高并发、低延迟、复杂数据结构支持和高可用性等方面的不足,当然还有其它原因,参考回答:tongyi.aliyun.com/qianwen/sha…

前端程序员 和 Redis

学习 Redis 可以显著提升应用的性能和用户体验。常见使用场景如下:

  • 缓存数据:Redis 可以用来缓存一些经常访问的数据,例如网站页面、用户会话数据(SESSION)
  • 消息队列:Redis 可以用来实现消息队列,用于解耦不同的系统或服务。
  • 实时通信:Redis 可以用来实现实时排行榜,例如网站热度排行榜、游戏排行榜等。
  • 其他:Redis 还可以用于其他很多场景,例如限流、计数器等。

使用 Docker 快速安装和使用 Redis

如果你还不了解 Docker,可以看一下开头的文章。我们可以在 Docker Desktop(www.docker.com/products/do…) 搜索 Redis 并安装

我们点击安装的 Redis Run,我们进行简单的配置:

指定一下数据卷,把本机的任意一个目录挂载到容器内的 /data 目录,这样容器的数据就会保存在本机

成功运行后,你可以看到:

我们可以在 files 里可以看到所有的容器内的文件:

我们测试一下 Volumes 是否生效:

体验 Redis

在Redis 上使用 Redis 的命令插入数据,命令可参考文档:redis.io/docs/latest…

简单了解最常使用的命令

  1. SET:存储一个字符串值,示例: SET mykey "Hello, Redis!"
  2. SETNX:仅在键不存在时才存储一个字符串值。对于实现锁非常有用。示例:SETNX mykey "Hello, Redis!"
  3. GET:检查一个字符串值,示例:GET mykey结果:"Hello, Redis!"
  4. MGET:在一次操作中检索多个字符串值,示例:MGET mykey mykey2
  5. INCRBY:原子性地递增(传递负数时递减)存储在给定键处的计数器。
  6. incr 是用于递增的,适合点赞,阅读量计算。示例:incr mycounter
  7. keys :查询 key 使用的,后加一个模式串来过滤,常用的是 '*' 来查询所有 key。示例:keys "*"
  8. DEL:删除一个或多个键。示例:del mykey
  9. EXISTS:查看指定 key 是否存在,支持传入多个 key,返回查到的 key 的数量。注意:如果多次传入相同的 key 是会被多次计算的

我们输入 exists a cc b a

这里可以看到相同 key 是被计算 + 1 的 注意:

  1. 关键字大小写都行,
  2. 我们发现很多操作都默认有创建的命令,例如:incr;set 还有接下来的 lpush;rpush 等等

Redis GUI 工具使用

我们可以下载 Redis GUI 工具:redis.com/redis-enter… 安装好,运行,我们可以看到:

点击唯一的一个链接。我们可看到我们刚刚在 Redis 容器中创建的数据

list 的操作

下面我们来看看最常用的数组的基本操作(文档地址:redis.io/docs/latest…),我们在 redis gui 中操作

执行

# lpush(left push) 使用
lpush arr 001
lpush arr 002
lpush arr 003
# rpush (right push)使用
rpush arr 004
rpush arr 005
rpush arr 006

可以看到:

回到 brower,看看我们创建了什么?

这里记住 lpush 是后面的先加入,rpush 是前面的先加入 同理,LPOP 和 RPOP 自然是从左边和从右边删除数据。

我们可以看到 lpop 删除了第一个数据,rpop删除了最后一个数据,我们使用lrange arr 0 -1查看一下现在的数据。这里 -1 代表着到最后,也就是查询全部数据的意思

执行 LLEN arr查看 list 的长度

执行LMOVE arr arr1 LEFT RIGHT移动 arr 左边一个元素到 arr1

执行 LTRIM arr1 1 -1 删除第一个元素:

是不是很简答 ,就是按照文档,使用指令就好了!

我们这时候可以看看我们之前存储 volumes 的目录应该多了一个 dump.rdb 文件。

在 node 中,如何使用

网上流行的有两个库

  1. redis:www.npmjs.com/package/red…
  2. ioredis:www.npmjs.com/package/ior…

关于他俩的区别? 如果你需要

  • 需要使用 Redis 集群或哨兵模式。
  • 需要高级功能,如管道、事务、流处理等。
  • 需要在连接不稳定的环境下自动重连。
  • 项目使用 TypeScript,需要强类型支持。
  • 需要管理多个 Redis 实例或集群。

那就使用 ioredis ,如果你的项目需求简单,只需基本的 Redis 功能。那就使用 redis。我们看一个 使用ioredis的简单示例代码:

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) {
  console.log(`get note ${uuid}`)
  return JSON.parse(await redis.hget("notes", uuid));
}

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

export async function addUser(username, password) {
  await redis.hset("users", [username], password);
  return {
    name: username,
    username
  }
}

export async function getUser(username, password) {
  const passwordFromDB = await redis.hget("users", username);
  if (!passwordFromDB) return 0;
  if (passwordFromDB !== password) return 1
  return {
    name: username,
    username
  } 
}

export default redis

这是一个简答的使用 ioredis 作为数据库的,增删改查的代码

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

是不是超级简答,哈哈!感谢您读到这,你真棒

标签:arr,uuid,示例,Redis,前端,redis,程序员,客户端
From: https://blog.csdn.net/gaotlantis/article/details/139232497

相关文章

  • Shiro+Jwt+Redis
    如何整合Shiro+Jwt+Redis,以及为什么要这么做我个人认为①为什么用shiro:“Shiro+Jwt+Redis”模式和“单纯的shiro”模式相比,主要用的是shiro里面的登录认证和权限控制功能②为什么用jwt:“Shiro+Jwt”模式和“Shiro+Cookie”模式相比,后者的用户登录信息是存储在服务器的......
  • 如何远程访问Redis?
    远程访问Redis是一种常见的需求,特别是在分布式系统或跨地域网络中。通过远程访问,我们可以轻松地对远程的Redis数据库进行操作和管理。天联保障数据安全对于远程访问Redis的安全性问题,我们可以借助天联来保障数据的安全。天联是一种基于私有通道的远程访问解决方案,可以让异......
  • 程序员从幼稚到成熟的标志是什么?
    1意识到写代码无非就是调用接口api,做业务无非也就是抄些增删改查的现成代码。也就是说,编程没想象中那样高大上,也就是谋生的一种手段。2知道提升能力不是单纯靠学,而是得靠解决实际问题。比如在做项目时,提升技能的最好方式是,去解决些值钱(比如分布式高并发或devops等)方面的问题......
  • 七年之痒!一个 PHP 程序员职业生涯的自述
    大家好,我是码农先森。今年刚好是我毕业的第七个年头,在婚姻感情当中都有一种「七年之痒」的说法,这次我把这个词「七年之痒」用一次在我的职业生涯复盘上。七年前我从告别校园,踏入互联网编程行业,七年后我依旧在编码的岗位上孜孜不倦,除了上学读书这算是我坚持了最久的一件事了。如果......
  • Redis教程(十七):Redis的Redisson分布式锁
    Redis分布式锁 Redis分布式锁的主要作用是在分布式系统环境下提供一种机制,用于确保在同一时间只有一个进程(或线程)能够执行某个关键代码段或访问特定的资源。这主要用于控制对共享资源的并发访问,以避免因多个进程同时修改同一数据而导致的数据不一致或其他竞争条件问题。 ......
  • 一个专为程序员设计的精致 Java 博客系统
    大家好,我是Java陈序员。今天,给大家介绍一个设计精致的博客系统,基于Java实现!关注微信公众号:【Java陈序员】,获取开源项目分享、AI副业分享、超200本经典计算机电子书籍等。项目介绍bolo-solo——......
  • redis
    redis介绍https://redis.io/downloads/win安装rediswin版本下载地址#最新5.x版本https://github.com/tporadowski/redis/releases/#最新3.x版本https://github.com/microsoftarchive/redis/releases-关系型数据库 PostgreSQL,MySQL,sqlserver,oracle.........
  • 面试官:Redis 用的多?那你说说他的内存使用和优化吧
    Redis的内存使用和优化一、reids内存分析二、redis内存使用1、对象内存2、缓冲内存三、redis子进程内存消耗1、关于linux系统的写时复制机制:2、关于linux的透明大页机制THP(TransparentHugePage):3、关于linux配置:四、redis内存管理1、内存上限:maxmemory2、内存回......
  • StackExchange.Redis跑起来,为什么这么溜?
    StackExchange.Redis是一个高性能的Redis客户端库,主要用于.NET环境下与Redis服务器进行通信,大名鼎鼎的stackoverflow网站就使用它。它使用异步编程模型,能够高效处理大量请求。支持Redis的绝大部分功能,包括发布/订阅、事务、Lua脚本等。由StackExchange团队维护,质量......
  • 解决前端性能瓶颈:高效处理大量数据渲染与复杂交互的策略与优化方法
    ✨✨祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心!✨✨ ......