具体步骤参考下面链接: 参考原文
常用命令: 卸载服务:redis-server --service-uninstall 开启服务:redis-server --service-start 停止服务:redis-server --service-stop 启动 Redis 命令行工具: redis-cli
连接远程 Redis 服务
redis-cli -h host -p port -a password host 是主机名,port 是端口号,password 是远程服务器密码
npm i redis --save
const redis = require('redis');//连接本地Redis服务const client = redis.createClient(6379, '127.0.0.1');//操作redis//1. 字符串client.set('name', 'cc', redis.print); //redis.print 打印设置的数据结果client.get('name', (err, value) => {if (err) throw err;console.log('Name:', value);});//2.哈希值(Hash)client.hmset('person', {//存储一个对象name: 'cc',age: 24,});client.hgetall('person', (err, obj) => {if (err) throw err;console.log('通过Hash存储:', obj);});//3. 集合(Set)client.sadd('address', '上海', redis.print);client.sadd('address', '北京', redis.print);client.sadd('address', '西安', redis.print);client.sadd('address', '广州', redis.print);//获取集合的值client.smembers('address', (err, members) => {if (err) throw err;console.log('获取集合的值:', members);});//4. List//lpush向列表中添加值// lrange 获取参数 start-end范围内的列表元素client.lpush('animal', 'dog', redis.print);client.lpush('animal', 'cat', redis.print);client.lpush('animal', 'pig', redis.print);client.lrange('animal', 0, 1, (err, items) => {if (err) throw err;items.forEach((item, i) => {console.log(`获取List内容、i-item:${i}-${item}`);});});client.on('error', (err) => {console.log('redis clinet Error', err);});
它是用于控制网络会话的,如用户的登录信息、购物车中商品等。Session 中的数据保存在服务器端,在服务端有很多存储方式,它可以保存在内存、(Redis、MongoDB)等数据库中、文件中。在客户端通过 Cookie 来保存 Session 的一个唯一标识,使用 Cookie 的原因是每个 HTTP 请求头都可以带上 Cookie 信息,并可以 设置 HtppOnly=true防止客户端篡改 Cookie.
npm install koa-session
const Koa = require('koa');const app = new Koa();const session = require('koa-session');const secretSessionKey = 'secert_key';app.keys = [secretSessionKey]; //设置签名Cookie秘钥const CONFIG = {key: 'myAppSessKey', //Cookie中的keymaxAge: '3600000', //失效时间 单位msoverwrite: true, //是否可以覆盖httpOnly: true, //是否禁止客户端篡改signed: true, //签名是否开启};app.use(session(CONFIG, app)); //加载session 中间件app.use(async (ctx) => {if (ctx.path === '/favicon.ico') return;console.log(ctx.session, 'views');let n = ctx.session.views || 0;ctx.session.views = ++n;ctx.body = `${n} 网站加载次数 views`;});app.listen(3000, () => {console.log('app listen at port 3000');});
const Koa = require('koa');const app = new Koa();const session = require('koa-session');const redis = require('redis');const client = redis.createClient(6379, '127.0.0.1'); //连接本机Redis服务const secretSessionKeys = 'secret_session';const { promisify } = require('util');const hgetllAsync = promisify(client.hgetall).bind(client);app.keys = [secretSessionKeys];const store = {get: async (key, maxAge) => {const result = await hgetllAsync(key);},set: (key, sess, maxAge) => {//存储Sessionclient.hmset(key, sess);},destroy: (key) => {//销毁client.hdel(key);},};const CONFIG = {key: 'session_redis',maxAge: 3600000,overwrite: true,httpOnly: true,signed: true,store,};app.use(session(CONFIG, app)); //使用session中间件app.use((ctx) => {if (ctx.path === '/favicon.ico') return;let n = ctx.session.views || 0;ctx.session.views = ++n;ctx.body = `${n} views`;});app.listen(3000, () => {console.log('app listen at 3000');});