下载插件
npm i koa-generic-session --save
npm i koa-redies --save
用就行不要去理解
const session = require('koa-generic-session')
const Redis = require('koa-redis')
const Store = new Redis().client
app.keys = ['saffasfassadasd', 'safasf'];
// 对session进行加密的key
app.use(session({
prefix:"aaafsfa", // 给session对象在redis存储的地址名前面添加的前缀内容
key:"abc", // key名
store:new Redis() // 在Redis中放入一个session对象
}))
router.get('/', async function (ctx, next) {
ctx.session.name = ctx.request.query.name
// 从url中获取name值赋给session
const st = await Store.hset('fix','name',ctx.request.query.name)
// 给fix存储地址类型是hash
const a = await Store.get("aaafsfa"+ctx.cookies.get("abc"))
// 获取括号中地址的字符串sting类型
console.log(JSON.parse(a).name)
// 转化成对象
ctx.body = 'this is a users response!'
// hash (哈希 和对象差不多) hget hset
// string 字符串 get set
// 创建集合 set
// 内容不会重复的集合 如果有这个value就不会再添加进去了
Store.sadd("key1", "v3");
Store.sadd("key1", "v6");
Store.sadd("key1", "v1");
set
// 查询set中数据
var key = "key1";
Store.multi()
.sismember(key, 'v1') // key1集合中是否存在v1
.sismember(key, 'v6')
.sismember(key, 'v2')
.smembers(key) // 查询key1集合中所有的value
.exec(function (err, replies) {
console.log("MULTI got " + replies.length + " replies");
console.log(replies) // 代表上面查询的结果的集合
replies.forEach(function (reply, index) { // 遍历出每一个结果返回出来
console.log("Reply " + index + ": " + reply.toString());
});
});
console.log(await Store.smembers("key1")) // 直接返回所有的set
console.log(Store.smembers("key1"))
list
// 提交list类型的数据
Store.rpush("mylist", "bbb")
Store.rpush("mylist", "ccc")
Store.lpush("mylist", "aaa") // 会将这个值放到list数据的最上面
console.log(await Store.rpop("mylist")) // ccc
// 作用是删除list中的最后一条数据
下图我最后执行了一次Store.rpush(“mylist”, “aaa”)
有序集合(SortedSets)
Store.zadd(['zdb',0,'mysql', 1,'mongo',2,'redis'], function(err, data) {
console.log(data); // 3
})
// [地址,0,'mysql', 1,'mongo',2,'redis']
Store.zrange(["zdb",0,2], function(err, data) { // 获取zdb中0-2之间的元素
console.log(data); // [ 'redis', 'mysql', 'redis' ]
})
Store.zrank(["zdb","mongo"], function(err, data) { // 返回mongo在zdb中的位置
// 位置从0开始算
console.log(data); //1
})