PersonModel.find & PersonModel.where:
1.PersonModel.find 无法直接替代
2.redis 只能查key
解决方法:需要find的字段设置有序集合,通过集合获取key和序,通过序判断, 再通过mget取值即可,但是只能查一个字段,那就是key
var Redis = require('ioredis');
var redis = new Redis();
redis.set('foo', 'bar');
redis.get('foo', function (err, result) {
console.log(result);
});
redis.set('foo1', 'bar');
redis.get('foo1', function (err, result) {
console.log(result);
});
redis.set('foo2', 'bar');
redis.get('foo2', function (err, result) {
console.log(result);
});
// 加入集合
redis.zadd('set2', [1, 'foo', 0, 'foo1', 0, 'foo2'])
// redis.sadd('set1', ['foo2', 'foo1', 'foo'])
let set2 = await redis.zrange('set2', 0, -1, 'WITHSCORES')
console.log('set2:', set2)
let pureSet = transformPureArray(set2)
// 打印结果: pureSet: [ 'foo1', 'foo2', 'ok', 'ok1', 'foo' ]
console.log('pureSet:', pureSet)
let values = await redis.mget(pureSet)
// 打印结果: values: [ 'bar', 'bar', 'bar' ]
// 返回的结果已经和find一样了
console.log('values:', values)
// redis.srem('set2', ['foo'])
// set = await redis.smembers('set1')
// console.log('removed set:', set)
function transformPureArray(array, num) {
if (num === undefined) {
// 去掉0,1序列号
return array.filter(word, index => {
return word !== '0' && word !== '1'
});
} else if (num === 0 || num === '0') {
// 去掉0,1序列号,留下0对应的值
let array2 = []
array.forEach(element, index => {
if (element === '0') {
array2[array2.length] = array[index - 1]
}
});
return array2
} else if (num === 1 || num === '1') {
// 去掉0,1序列号,留下1对应的值
let array2 = []
array.forEach(element, index => {
if (element === '1') {
array2[array2.length] = array[index - 1]
}
});
return array2
}
}
PersonModel.updateOrCreateById:
解决方法:一般情况下set代替,如果更新部分则get和set代替
var Redis = require('ioredis');
var redis = new Redis();
redis.set('foo', 'bar');
PersonModel.findOne:
解决方法:一般情况下get代替,尽量避免直接查询内容等
var Redis = require('ioredis');
var redis = new Redis();
redis.set('foo');
PersonModel.findOneAndUpdate:
解决方法:一般情况下set代替,如果更新部分则get和set代替
var Redis = require('ioredis');
var redis = new Redis();
redis.set('foo');
PersonModel.update:
解决方法:一般情况下set代替,如果更新部分则get和set代替
var Redis = require('ioredis');
var redis = new Redis();
redis.set('foo');