redis替代mongo

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');

你可能感兴趣的:(redis替代mongo)