node-redis
Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库,官方提供测试数据,50个并发执行100000个请求,读的速度是110000次/s,写的速度是81000次/s ,且Redis通过提供多种键值数据类型来适应不同场景下的存储需求。
同类型技术:memcache
特点
- 存储结构特别-字典
- 内存存储与持久化- 缓存
- 功能丰富
- 简单稳定- 简单可依赖
redis支持的键值数据类型
1) 字符串类型 string
2) 哈希类型 hash //map格式
3) 列表类型 list //linkedlist格式。支持重复元素
4) 集合类型 set //不允许重复元素
5) 有序集合类型 sortedset //不允许重复元素,且元素有顺序
redis的应用场景
1)缓存(数据查询、短连接、新闻内容、商品内容等等)
2)聊天室的在线好友列表
3)任务队列。(秒杀、抢购、12306等等)
4)应用排行榜
5)网站访问统计
6)数据过期处理(可以精确到毫秒
7)分布式集群架构中的session分离
mongodb和redis区别
mongodb也是一个nosql数据库, 存储的数据是非结构化的, 但是mongdb和redis不能放在一起对比, 因为完全没有可比性, 使用场景完全不同
redis: 主要使用内存, 有两种持久化方案, 速度非常快, 一般做分布式缓存使用。
mongodb: 主要使用硬盘存储, 所以不会担心数据丢失, 速度介于redis和传统数据库之间.
但是mongodb更擅长存储大文本数据, 以及一些非结构化数据, mongodb比redis的数据类型更加丰富.
例如: 存储小说网站的小说, 存储电商网站的评论等这些数据。
命令操作
1.字符串类型 string
存储: set key value //set username zhangsan
获取: get key //get username
删除: del key //del username
2.哈希类型 hash
存储:hset key field value //hset myhash username lisi, hset myhash password 123
获取:hget key field //hget myhash username
hgetall key //hgetall myhash
删除:hdel key field //hdel myhash username
3.列表类型 list:可以添加一个元素到列表的头部(左边)或者尾部(右边)
存储:lpush key value -将元素加入列表左表 //lpush myList a, lpush myList b
rpush key value -将元素加入列表右边 //rpush myList c
获取lrange key start end -范围获取 //lrange myList 0 -1 全部获取
删除:lpop key -删除列表最左边的元素,并将元素返回
rpop key -删除列表最右边的元素,并将元素返回
4.集合类型 set : 不允许重复元素
存储:sadd key value //sadd myset a, sadd myset a
获取:smembers key -获取set集合中所有元素 //smembers myset
删除:srem key value -删除set集合中的某个元素 //srem myset a
5.有序集合类型 sortedset:不允许重复元素,且元素有顺序.
存储:zadd key score value//zadd mysort 60 zhangsan,zadd mysort 50 lisi,zadd mysort 80 wang
获取:zrange key start end [withscores] //zrange mysort 0 -1, zrange mysort 0 -1 withscores
删除:zrem key value //zrem mysort lisi
6.通用命令
keys * : 查询所有的键
type key: 获取键对应的value的类型
del key : 删除指定的key value
EXISTS keyName : 查询key是否存在,返回1存在,返回0不存在
持久化
redis是一个内存数据库,当redis服务器重启,获取电脑重启,数据会丢失,我们可以将redis内存中的数据持久化保存到硬盘的文件中。
1.RDB:默认方式,不需要进行配置,默认就使用这种机制
在一定的间隔时间中,检测key的变化情况,然后持久化数据
save 900 1 //在900秒15分钟有1个key发生变化,就持久化一次
save 300 10 //在300秒5分钟有10个key发生变化,就持久化一次
save 60 10000 //在60秒1分钟有10000个可以发生变化,就持久化一次
指定配置文件启动
$ ./redis-server redis.conf
2.AOF:日志记录的方式,可以记录每一条命令的操作。可以每一次命令操作后,持久化数据
appendonly no(默认关闭aof) --> appendonly yes (开启aof)
# appendfsync always //每一次操作都进行持久化
appendfsync everysec //每隔一秒进行一次持久化
# appendfsync no //不进行持久化
依赖包
npm install ioredis
基本使用
const Redis = require("ioredis");
const redis = new Redis();
redis.set("foo", "bar");
redis.get("foo", function (err, result) {
if (err) {
console.error(err);
} else {
console.log(result); // Promise resolves to "bar"
}
});