每天学习一点点,成功增加一大步

NodeJs笔记:redis 的使用

NodsJS zhanghui 618℃

今天没什么事就研究一下, node 如何与 redis 建立并使用,在这里简单的科普一下什么是 redis,关于 redis 详细信息网上遍地都是自己找去。在这里的主要是如题的内容

redis的高速存取性能让人印象深刻,虽然是分布式存储,但相比本地内存,性能毫不逊色。

本地安装 redis

要想使用 redis 首先在本地安装服务器软件和客户端管理工具,或者是从服务器商那获取这个资源(那是得花钱)。

以下是几个安装的下载地址

 

redis 服务器软件 官网:http://redis.io/download

redis 服务器软件 github:https://github.com/MSOpenTech/redis/tags

Redis 数据库桌面管理工具:http://redisdesktop.com/download

在这里我是通过 github 来下载的 win-3.2.100 版本,这里有两种包分别是:msizip ,而 msi 就是傻瓜式的一步步安装,zip 的安装可参考这里

redis 密码验证设置

因我当前的环境是 windows 10 ,所以这里记录的也是 windows 环境下的操作。

首先通过 cmd 定位到 redis 的安装位置

cd C:\Program Files\Redis

临时性密码设置

到 redis-cli.exe 查看密码是否已经设置,如果没有则去一步的设置,这种的设置是临时性的密码设置,也就是说当电脑被重启之后,这步设置的密码就失效了。

永久性密码设置

打开 redis.windows.conf 和 redis.windows-service.conf 的两个配置文件中找到requirepass这个参数,如下配置:

# requirepass foobared
requirepass 123456

指定密码123456,保存后重启redis就可以了,在实践中发现如果只单单的修改了一个配置文件(redis.windows.conf)并没有启作用。

开启服务:redis-server –service-start

停止服务:redis-server –service-stop

建立连接

import * as redis from 'redis';

// redis 链接
const redisClient = redis.createClient(6379, '127.0.0.1');
// redis 链接错误
redisClient.on('error',error=>{
    throw new Error(error);
});
// redis 密码验证 (未设置密码验证,此项可不需要)
redisClient.auth("123456", (error, res) =>{
    console.log('auth error: ',error);
    console.log('auth res: ',res);
});

set 存

redisClient.set('test_abc','123456',(error, res)=>{
    if (error) {
        throw new Error(error);
    } else {
        console.log('res:',res);
        redisClient.end(true);
    }
});

运行后的结果为:

res: OK

get 取

redisClient.get("test_abc", (err, reply) => {
    // reply is null when the key is missing
    console.log(reply);
});

运行后的结果为:

123456

hash 存取

hash set的设值和抽取数据都有单个key和多个key两种方式

※ 设定单个key的值,在取值时获取特定filed下指定key的值

redisClient.hset('test_def', 'test_abc', 'abcdefg', (error, res)=>{
    if (error) {
        console.log('error:',error);
    } else {
        console.log('res:',res);
        redisClient.hget('test_def','test_abc',(error, getRes)=>{
            if (error) {
                console.log('error:',error);
            } else {
                console.log('getRes:', getRes);
                redisClient.end(true);
            }
        });
    }
});

运行后的结果为:

res: 1
getRes: abcdefg

注意:当hget方法在指定field下找不到指定的key时,会传给回调函数null,而非空字符或undefined。

※ 设定多个key的值,取值时获取指定field下指定单个或多个key的值

var qe = {a: 2, b:3, c:4};
redisClient.hmset('test_field', qe, (err, response) => {
    console.log('err:', err);
    console.log('response:', response);
    redisClient.hmget('test_field', ['a', 'c'], (err, res) => {
        console.log('err:',err);
        console.log('res:',res);
        redisClient.end(true);
    });
});

运行后的结果为:

err: null
response: OK
err: null
res: [ '2', '4' ]

lists 列表

列表中的元素顺序就是插入顺序,元素没有唯一性限制。

redisClient.del("test_lists", (err, listRes) => {
    redisClient.rpush("test_lists", [1, 2, 3, 4, 5], (err, res) =>{
        console.log('err:',err);
        console.log('res:',res);
        // -1 是结尾的一个数字,如果写 2 那么它从数组的索引的0开始到2结束,如果是-1则是全部
        redisClient.lrange('test_lists', 0, -1, (err, resPrint) => {
            console.log('err:',err);
            console.log('resPrint:', resPrint);
            redisClient.end(true);
        });
    });
});

运行后的结果为:

err: null
res: 5
err: null
resPrint: [ '1', '2', '3', '4', '5' ]

转载请注明:隨習筆記 » NodeJs笔记:redis 的使用