“
本文介绍了关于 Redis 的基本使用,包括安装步骤、启动服务、nodejs项目安装使用、运行指令等、实例等
”
01
—
安装软件
1、Windows 安装
* 官网下载: https://redis.io/download
* 启动 redis: cmd 切换到 redis 目录下执行
redis-server.exe redis.windows.conf
* 命令行设置缓存 key value
# 打开命令行编辑(cmd 到 redis 目录下)redis-cli.exe -h 127.0.0.1 -p 6379redis-cli -h 127.0.0.1redis-cli# 输入指令set myKey abcget myKeykeys *del key
2、Mac OS 安装
* 官网下载: https://redis.io/download
* 安装
# 解压tar -zxvf redis-5.0.5.tar.gz# 拷贝的local目录下sudo cp -rf redis-5.0.5 /usr/local/# 进入相应目录下cd /usr/local/redis-5.0.5# 编译 - 时间有点长,可能要等几分钟sudo make test# 安装sudo make install# 建立相应目录sudo mkdir bin etc db# 拷贝启动文件sudo cp src/mkreleasehdr.sh src/redis-benchmark src/redis-check-rdb src/redis-cli src/redis-server bin/
* 服务启动 redis-server
* 结束服务: 关闭启动窗口,或者新窗口执行下面操作
redis-cli127.0.0.1:6379> keys *(empty list or set)127.0.0.1:6379> SHUTDOWNnot connected> exit
* 报错时,命令清理再编译:sudo make distclean && sudo make && sudo make test
02
—
判断服务器安装/启动
1、登录服务器,输入密码
ssh -p port name@ip
2、判断服务器安装: whereis
[root@localhost bin]# whereis redis-cliredis-cli: /usr/local/bin/redis-cli[root@localhost bin]# whereis redis-serverredis-server: /usr/local/bin/redis-server
3、判断服务器启动,可使用 ps 或者 netstat 查看
[root@localhost bin]# ps aux | grep redis-server[root@localhost bin]# netstat -tunple | grep 6379
4、设置 redis 开机启动
[root@localhost bin]# systemctl enable redis
5、查看所有开机启动项
[root@localhost bin]# systemctl list-unit-files |grep enabled
6、查看 redis.service 内容
[root@localhost bin]# locate redis.service
7、查看 redis-server 版本号
redis-server --version 或者 redis-server -v
[root@localhost bin]# redis-server --versionRedis server v=4.0.14 sha=00000000:0 malloc=libc bits=64 build=f73ec81c204283f3
8、查看 redis-cli 版本号
redis-cli --version 或者 redis-cli -v
[root@localhost bin]# redis-cli -vredis-cli 4.0.14
9、命令行设置或查看 keys
# 查看 redis-cli 路径[root@localhost bin]# whereis redis-cli# 打开编辑功能[root@localhost bin]# /usr/local/bin/redis-cli# 输入指令127.0.0.1:6379> keys *1) "applicaton"
10、示例
03
—
Node项目安装
如 nodejs + eggjs 项目,可以安装 egg-redis:
https://github.com/eggjs/egg-redis
1、引入 egg-redis 安装包
yarn add egg-redis
2、添加 plugin.js 配置
exports.redis = { enable: true, // 是否开启 package: 'egg-redis', env: ['release', 'prod'] // 配置开启的环境};
3、添加 config.default.js 配置
config.redis = { client: { port: 6379, host: '127.0.0.1', password: '', db: 0 },}
4、添加缓存设置文件
可以添加到 service/redis 目录结构中
'use strict';const Service = require('egg').Service;class RedisService extends Service { /** * 设置对应缓存 * @param {String} key 名称 * @param {*} value 数据 * @param {*} seconds 缓存时间 */ async set(key, value, seconds) { const { redis } = this.app; // 判断 Redis:关闭Redis,返回空 if (!redis) { return; } value = JSON.stringify(value); if (!seconds) { await redis.set(key, value); } else { // 设置有效时间 await redis.set(key, value, 'EX', seconds); } } /** * 获取对应缓存 * @param {String} key 名称 */ async get(key) { const { redis } = this.app; // 判断 Redis:关闭Redis,返回空 if (!redis) { return; } let data = await redis.get(key); if (!data) return; data = JSON.parse(data); return data; } /** * 删除一个(或多个)keys * @param {Array} keys 需要删除的keys */ async del(keys) { const { redis } = this.app; const data = await redis.del(...keys); return data; } // 清空 redis async flushall() { const { redis } = this.app; await redis.flushall(); return; }}module.exports = RedisService;
5、使用
预先判断缓存中是否存在需要的字段,如获取应用列表信息:
async demo() { const {service} = this; console.time(); // 开始计时 let data = await service.monitor.redis.get('key'); // 获取缓存 // 判断是否存在缓存 if (!data) { data = await service.monitor.demo.getKeyData(); // 应用列表 service.monitor.redis.set('key', data); // 设置缓存 } console.timeEnd(); // 打印时长 this.success({data});}
注意:可以在需要缓存的 key 值更新的地方使用 set。
04
—
Redis 命令
下表是我使用过的命令,还有很多数据类型,目前只用了字符串类型
命令 | 行为 | 返回值 | 示例 |
set | 设置存储在给定键中的值 | ok | set(key, value) |
get | 获取存储在给定键中的值 | value/null | get(key) |
del | 删除存储在给定键中的值 | 1/0 | del(key) |
setnx | 设置 key value,设置不存在的key,,否则设置失败 | 1/0 | setnx(key, value) |
expire | 设置一个 key 的过期的秒数 | 1/0 | expire(key, seconds) |
1、set 设置 key value
await redis.set(key, value, 'EX', seconds);
2、get 获取 key value
await redis.get(key);
3、del 删除一个或多个 keys
await redis.del(...keys);
4、flushall 清除所有 keys
await redis.flushall();
5、setnx 设置 redis 中不存在的 key
await redis.setnx(key, value);
6、expire 设置过期时间
await redis.expire(key, seconds);