nodejs中如何使用redis nodejs reduce
wptr33 2024-12-18 17:32 31 浏览
nodejs中如何使用redis
一、Redis是什么?
Redis 是一个开源的内存数据结构存储器,一般可以用于数据库、缓存、消息代理等,我们常在项目中用redis解决高并发、高可用、高可扩展、大数据存储等问题; 它本质上是一个NoSql(非关系型数据库),我们常用的MySQL则是关系型数据库。它并不能替代关系型数据库,更多的时候是对关系型数据库的一种补充;
二、Redis的基本数据类型
- 字符串
- 哈希
- 列表
- 集合
- 有序集合
- HyperLogLog
- 位图
redis中共有七种数据类型,我这边会简单介绍下其中五种常见的数据类型;
2-1、字符串(String)
字符串的类型是Redis中最基础的键值对类型,可以保存普通文字,或者是序列化的二进制数据;字符串类型最大可以存储512M的数据;
字符串操作命令
- set 设置一个字符串值
- get 获取字符串键对应的值
- getrange 截取字符串的内容
- strlen 获取字符串长度
- setex 设置过期时间
- mset 设置多个key-value
- mget 获取多个value
- append 在字符串结尾加入内容
- incr 数字自增加1
- incrby 数字加上指定的整数值
- incrbyfloat 数字加上指定的浮点数
- decr 数字自减一
- decby 数字减去指定的整数值
2-2、哈希类型
常用于保存复杂的数据结构。
- hest 设置单个字段
- hmset 设置多个字段
- hget 获取单个字段值
- hmget 获取多个字段值
- hgetall 获取所有字段值
- hkeys 获取所有字段名
- hlen 获取哈希表中字段的数量
- hexists 判断哈希表中存在某个字段
- hvals 获取哈希表中所有字段值
- hdel 删除哈希表的字段
- hincrby 给某个字段加上指定的整数值
- hincrbyfloart 给某个字段加上指定的浮点数
2-3、列表类型
常用于保存序列化的数据。
- rpush 末尾新增值
- lpush 开头新增值
- llen 获取长度
- lindex 获取表某个元素
- linsert 在列表某个位置插入值
- lpop 删除最左边的值 -rpop 删除最右边的值
- lrem 删除某个位置的值
2-4、集合类型
如果你的需求是不允许数据重复,则你需要使用redis提供的结合类型。
- sadd 添加值
- scard 获取集合长度
- sismember 判断是否含有某个元素
- srem 删除某个元素
- srop 随机删除某个元素,并返回
- srandmember 随机返回集合中的元素
- sunion 组合两个或多个结合并返回所有元素的列表
- smove 将元素从一个集合移动到另一个结合
2-5、有序集合
结合将带有排序功能,redis将按照分数值进行排序。
- zcard 获取结合长度
- zcount 查询某个分数值区间内的值数量
- zscore 查询某个值的分数值
- zrange 获取集合内容的升序
- zrevrange 获取集合内容降序
- zrangebyscore 获取分数值区间内的集合内容升序
- zrevrangebyscore 获取分数值区间内的集合内容降序
- zrank 获取升序排序(从0开始)
- zrevrank 获取降序排序(从0开始)
- zrem 删除集合中的值(单个、多个)
- zremrangebyrank 删除排名区间内的值
- zremrangebyscore 删除分数值区间内的值
三、安装 redis 及辅助工具 Another Redis Desktop Manager
官网地址:redis.io/ 下载地址:download.redis.io/releases/re…
window环境下安装redis可以点击此链接
可视化工具: Another Redis Desktop Manager(goanother.com/cn/)
四、nodejs上安装 ioredis
接下来在nodejs后端项目中使用redis的话,可以安装ioredis这个库操作redis,如果是使用typescript的话,可以再安装 @types/ioredis。
js复制代码npm i ioredis
npm i --save-dev @types/ioredis
ioredis 官方文档
五、nodejs上使用 ioredis
5-1、基础的redis链接配置
ts复制代码import redis from 'ioredis'
const { REDIS_PORT, REDIS_HOST, REDIS_PASSWORD, REDIS_DB } = process.env as any
export default new redis({
port: REDIS_PORT, // redis的端口
host: REDIS_HOST, // redis的允许地址
password: REDIS_PASSWORD, // redis的密码
db: REDIS_DB // redis由16个db库,可以手动选择第几个,由0开始
})
5-2、项目中使用
ioredis 将redis命令全部更改为了函数调用的形式,我们调用redis就像平时开发调用函数一样即可,下面是最简单的使用案例:
typescript复制代码import redis from '@/redis'
/**
* 重置存储 session的过期时间
* @param key
* @param time 过期时间设置(min)
*/
export const resetTime = (key: string, time = 60) => {
redis.expire(key, time * 60)
recordNum(redisType.expire)
}
六、结语
本文当中简单介绍了redis的基础操作命令,在nodejs中如何使用redis,实际生产当中的redis操作更为复杂和多样,还是需要我们自己多进行摸索和实践;本文当中的操作只是常用的基础操作,如果想知道更多的redis操作,可以去查看redis的官方文档。
原文链接:https://juejin.cn/post/7245658681731235899
相关推荐
- oracle数据导入导出_oracle数据导入导出工具
-
关于oracle的数据导入导出,这个功能的使用场景,一般是换服务环境,把原先的oracle数据导入到另外一台oracle数据库,或者导出备份使用。只不过oracle的导入导出命令不好记忆,稍稍有点复杂...
- 继续学习Python中的while true/break语句
-
上次讲到if语句的用法,大家在微信公众号问了小编很多问题,那么小编在这几种解决一下,1.else和elif是子模块,不能单独使用2.一个if语句中可以包括很多个elif语句,但结尾只能有一个else解...
- python continue和break的区别_python中break语句和continue语句的区别
-
python中循环语句经常会使用continue和break,那么这2者的区别是?continue是跳出本次循环,进行下一次循环;break是跳出整个循环;例如:...
- 简单学Python——关键字6——break和continue
-
Python退出循环,有break语句和continue语句两种实现方式。break语句和continue语句的区别:break语句作用是终止循环。continue语句作用是跳出本轮循环,继续下一次循...
- 2-1,0基础学Python之 break退出循环、 continue继续循环 多重循
-
用for循环或者while循环时,如果要在循环体内直接退出循环,可以使用break语句。比如计算1至100的整数和,我们用while来实现:sum=0x=1whileTrue...
- Python 中 break 和 continue 傻傻分不清
-
大家好啊,我是大田。今天分享一下break和continue在代码中的执行效果是什么,进一步区分出二者的区别。一、continue例1:当小明3岁时不打印年龄,其余年龄正常循环打印。可以看...
- python中的流程控制语句:continue、break 和 return使用方法
-
Python中,continue、break和return是控制流程的关键语句,用于在循环或函数中提前退出或跳过某些操作。它们的用途和区别如下:1.continue(跳过当前循环的剩余部分,进...
- L017:continue和break - 教程文案
-
continue和break在Python中,continue和break是用于控制循环(如for和while)执行流程的关键字,它们的作用如下:1.continue:跳过当前迭代,...
- 作为前端开发者,你都经历过怎样的面试?
-
已经裸辞1个月了,最近开始投简历找工作,遇到各种各样的面试,今天分享一下。其实在职的时候也做过面试官,面试官时,感觉自己问的问题很难区分候选人的能力,最好的办法就是看看候选人的github上的代码仓库...
- 面试被问 const 是否不可变?这样回答才显功底
-
作为前端开发者,我在学习ES6特性时,总被const的"善变"搞得一头雾水——为什么用const声明的数组还能push元素?为什么基本类型赋值就会报错?直到翻遍MDN文档、对着内存图反...
- 2023金九银十必看前端面试题!2w字精品!
-
导文2023金九银十必看前端面试题!金九银十黄金期来了想要跳槽的小伙伴快来看啊CSS1.请解释CSS的盒模型是什么,并描述其组成部分。答案:CSS的盒模型是用于布局和定位元素的概念。它由内容区域...
- 前端面试总结_前端面试题整理
-
记得当时大二的时候,看到实验室的学长学姐忙于各种春招,有些收获了大厂offer,有些还在苦苦面试,其实那时候的心里还蛮忐忑的,不知道自己大三的时候会是什么样的一个水平,所以从19年的寒假放完,大二下学...
- 由浅入深,66条JavaScript面试知识点(七)
-
作者:JakeZhang转发链接:https://juejin.im/post/5ef8377f6fb9a07e693a6061目录由浅入深,66条JavaScript面试知识点(一)由浅入深,66...
- 2024前端面试真题之—VUE篇_前端面试题vue2020及答案
-
添加图片注释,不超过140字(可选)1.vue的生命周期有哪些及每个生命周期做了什么?beforeCreate是newVue()之后触发的第一个钩子,在当前阶段data、methods、com...
- 今年最常见的前端面试题,你会做几道?
-
在面试或招聘前端开发人员时,期望、现实和需求之间总是存在着巨大差距。面试其实是一个交流想法的地方,挑战人们的思考方式,并客观地分析给定的问题。可以通过面试了解人们如何做出决策,了解一个人对技术和解决问...
- 一周热门
- 最近发表
- 标签列表
-
- git pull (33)
- git fetch (35)
- mysql insert (35)
- mysql distinct (37)
- concat_ws (36)
- java continue (36)
- jenkins官网 (37)
- mysql 子查询 (37)
- python元组 (33)
- mybatis 分页 (35)
- vba split (37)
- redis watch (34)
- python list sort (37)
- nvarchar2 (34)
- mysql not null (36)
- hmset (35)
- python telnet (35)
- python readlines() 方法 (36)
- munmap (35)
- docker network create (35)
- redis 集合 (37)
- python sftp (37)
- setpriority (34)
- c语言 switch (34)
- git commit (34)
