node-redis的基本使用

386 阅读4分钟

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	   //不进行持久化

依赖包

ioredis

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"
  }
});

Pipelining(管道)

Transaction(事务)