• nodejs中如何使用Redis


    Redis介绍:

    Redis 是一个开源的内存数据结构存储器,一般可以用于数据库、缓存、消息代理等,我们常在项目中用redis解决高并发、高可用、高可扩展、大数据存储等问题; 它本质上是一个NoSql(非关系型数据库),我们常用的MySQL则是关系型数据库。它并不能替代关系型数据库,更多的时候是对关系型数据库的一种补充;

    Redis的基本数据类型:

    • 字符串
    • 哈希
    • 列表
    • 集合
    • 有序集合
    • HyperLogLog
    • 位图
     字符串:

    字符串的类型是Redis中最基础的键值对类型,可以保存普通文字,或者是序列化的二进制数据;字符串类型最大可以存储512M的数据;

    • set 设置一个字符串值
    • get 获取字符串键对应的值
    • getrange 截取字符串的内容
    • strlen 获取字符串长度
    • setex 设置过期时间
    • mset 设置多个key-value
    • mget 获取多个value
    • append 在字符串结尾加入内容
    • incr 数字自增加1
    • incrby 数字加上指定的整数值
    • incrbyfloat 数字加上指定的浮点数
    • decr 数字自减一
    • decby 数字减去指定的整数值
    哈希: 

    常用于保存复杂的数据结构。

    • hest 设置单个字段
    • hmset 设置多个字段
    • hget 获取单个字段值
    • hmget 获取多个字段值
    • hgetall 获取所有字段值
    • hkeys 获取所有字段名
    • hlen 获取哈希表中字段的数量
    • hexists 判断哈希表中存在某个字段
    • hvals 获取哈希表中所有字段值
    • hdel 删除哈希表的字段
    • hincrby 给某个字段加上指定的整数值
    • hincrbyfloart 给某个字段加上指定的浮点数
    列表: 

    常用于保存序列化的数据。

    • rpush 末尾新增值
    • lpush 开头新增值
    • llen 获取长度
    • lindex 获取表某个元素
    • linsert 在列表某个位置插入值
    • lpop 删除最左边的值 -rpop 删除最右边的值
    • lrem 删除某个位置的值
    集合: 

    常用于不允许数据重复,则使用redis提供的集合类型。

    • sadd 添加值
    • scard 获取集合长度
    • sismember 判断是否含有某个元素
    • srem 删除某个元素
    • srop 随机删除某个元素,并返回
    • srandmember 随机返回集合中的元素
    • sunion 组合两个或多个结合并返回所有元素的列表
    • smove 将元素从一个集合移动到另一个结合
    有序集合 :

    常用于带有排序功能,redis将按照分数值进行排序。

    • zcard 获取结合长度
    • zcount 查询某个分数值区间内的值数量
    • zscore 查询某个值的分数值
    • zrange 获取集合内容的升序
    • zrevrange 获取集合内容降序
    • zrangebyscore 获取分数值区间内的集合内容升序
    • zrevrangebyscore 获取分数值区间内的集合内容降序
    • zrank 获取升序排序(从0开始)
    • zrevrank 获取降序排序(从0开始)
    • zrem 删除集合中的值(单个、多个)
    • zremrangebyrank 删除排名区间内的值
    • zremrangebyscore 删除分数值区间内的值

    nodejs上安装 ioredis:

    nodejs后端项目中使用redis的话,可以安装ioredis这个库操作redis,如果是使用typescript的话,可以再安装 @types/ioredis

    1. npm i ioredis
    2. npm i --save-dev @types/ioredis

    ioredis中文文档|ioredis js中文教程|解析 | npm中文文档

    nodejs上使用 ioredis:

    1. import redis from 'ioredis'
    2. const { REDIS_PORT, REDIS_HOST, REDIS_PASSWORD, REDIS_DB } = process.env as any
    3. export default new redis({
    4. port: REDIS_PORT, // redis的端口
    5. host: REDIS_HOST, // redis的允许地址
    6. password: REDIS_PASSWORD, // redis的密码
    7. db: REDIS_DB // redis由16个db库,可以手动选择第几个,由0开始
    8. })

    ioredis 将redis命令全部更改为函数调用的形式,调用redis就像平时开发调用函数一样。

    1. import redis from '@/redis'
    2. /**
    3. * 重置存储 session的过期时间
    4. * @param key
    5. * @param time 过期时间设置(min)
    6. */
    7. export const resetTime = (key: string, time = 60) => {
    8. redis.expire(key, time * 60)
    9. recordNum(redisType.expire)
    10. }

  • 相关阅读:
    Spring高级bean的实例化方法
    南大通用数据库-Gbase-8a-学习-15-Gbase8a通过Dblink访问Gbase8a(95->86)
    NoSuchMethodError的常见原因和通用解决方式
    (Java实习生)每日10道面试题打卡——Java基础知识篇
    【scikit-learn基础】--『预处理』之 标准化
    java mysql ssm框架的同城配送系统源码
    Java设计模式 --建造者模式【Builder Pattern】
    从CPU100%高危故障到稳定在10%:一个月的优化之旅,成功上线!
    基于Nodejs的电博客管理系统的设计和实现
    Pytest----如何使用logging模块写日志
  • 原文地址:https://blog.csdn.net/qq_46344419/article/details/132599390