Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。为了保证效率,数据都是缓存在内存中,redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。(来源百科)对于web应用优化提升性能,首要是要优化与IO相关的操作,也就是主要对数据库进行优化,一般方式有:合理的设计数据库结构,和对SQL语句的优化,建立集群以及读写分离。二:引入缓存机制(把数据从资源消耗比较高的地方转移消耗的地方),提高的办法是,更快的存储介质(如ssd),将数据存储在内存。
官网:https://redis.io/
安装(linux:centos7.2):
yum -y install redis
成功:
redis-server -v
一:基本功能:数据缓存 , 数据存储,消息中介
二:基本工具
a.服务启动工具
直接启动:
redis-server
守护进程启动:
修改配置文件:/etc/redis.conf,搜索daemonize 将默认no改为yes。然后重载配置文件。端口默认:6379。
vim /etc/redis.conf
redis-server /etc/redis.conf
查询一下进程:
ps aux | grep redis
b.命令行的客户端工具
默认连接(本地)
redis-cli
redis-cli -h 127.0.0.1 -p 6379
keys *
添加key-value(keyname: haha value:12)
set haha 12
获得一个key的value:
get haha
del website
三:在node.js中使用redis
安装redis模块
npm install redis
简单例子:
var redis = require('redis'); //redis模块
var client = redis.createClient(6379,'localhost'); //连接数据库
client.set('hello','this is avalue'); //增加key-value
对List操作:
添加: lpush 和 rpush ,看两种方法可能有点晕,它们分别指的是从头部(左边)或尾部(右边)插入,最多可包括2^32-1(4294967295)个元素。
先从头部插入(website为列表名):
127.0.0.1:6379> lpush website google baidu csdn
从后边插入
127.0.0.1:6379> rpush website php c++ c node,js
看一下元素:
LRANGE key start stop
127.0.0.1:6379> lrange website 0 10
127.0.0.1:6379> llen website
lset website 1 "dangdang"
看一下索引为1的值:
lindex website 1
删除:
从头部移除个元素
lpop website
从尾部移除个元素
rpop website
删除索引为1的值
127.0.0.1:6379> lrem website 1 "baidu"
更多用法,可以看官方文档
set(集合)的用法:
Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。集合中最大的成员数为 232 - 1 (4294967295)
node.js
var redis = require('redis');
var client = redis.createClient(6379,'localhost');
client.sadd('testSet',1); //向名为testSet添加内容
client.sadd('testSet',1000);
client.sadd('testSet',100);
client.sadd('testSet','google');
client.sadd('testSet','baidu');
client.smembers('testSet',function(err,v){
console.log('client.smembers err,v:',err,v);
});//遍历成员,异步操作
消息中介:
发布消息
var redis =require ('redis');
var client = redis.createClient(6379,'localhost');
client.publish('testPublish','hello redis');//频道 testPublish 消息 hello redis
订阅
var redis = require('redis');
var client = redis.createClient(6379,"localhost");
client.subscribe("testPublish");//订阅频道
//监听,获取频道和消息
client.on('message',function(channel,msg){
console.log( 'client.on message,channel:',channel,'message:',msg);
});