今天没什么事就研究一下, 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 版本,这里有两种包分别是:msi 和 zip ,而 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 的使用