Redis 是一个开源的内存数据结构存储器,一般可以用于数据库、缓存、消息代理等,我们常在项目中用redis解决高并发、高可用、高可扩展、大数据存储等问题; 它本质上是一个NoSql(非关系型数据库),我们常用的MySQL则是关系型数据库。它并不能替代关系型数据库,更多的时候是对关系型数据库的一种补充;
字符串的类型是Redis中最基础的键值对类型,可以保存普通文字,或者是序列化的二进制数据;字符串类型最大可以存储512M的数据;
set 设置一个字符串值get 获取字符串键对应的值getrange 截取字符串的内容strlen 获取字符串长度setex 设置过期时间mset 设置多个key-valuemget 获取多个valueappend 在字符串结尾加入内容incr 数字自增加1incrby 数字加上指定的整数值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后端项目中使用redis的话,可以安装ioredis这个库操作redis,如果是使用typescript的话,可以再安装 @types/ioredis。
- npm i ioredis
- npm i --save-dev @types/ioredis
ioredis中文文档|ioredis js中文教程|解析 | npm中文文档
- 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开始
- })
ioredis 将redis命令全部更改为函数调用的形式,调用redis就像平时开发调用函数一样。
- 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)
- }