下载地址:https://github.com/MSOpenTech/redis/releases。
Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,这里我们下载 Redis-x64-xxx.zip压缩包到 C 盘,解压后,将文件夹重新命名为 redis。
打开文件夹,内容如下:
打开一个 cmd 窗口 使用 cd 命令切换目录到 C:\redis 运行:
redis-server.exe redis.windows.conf
如果想方便的话,可以把 redis 的路径加到系统的环境变量里,这样就省得再输路径了,后面的那个 redis.windows.conf 可以省略,如果省略,会启用默认的。输入之后,会显示如下界面:
这时候另启一个 cmd 窗口,原来的不要关闭,不然就无法访问服务端了。
切换到 redis 目录下运行:
redis-cli.exe -h 127.0.0.1 -p 6379
这时你就可以通过命令来操作redis了。
1、Redis 字符串数据类型的相关命令用于管理 redis 字符串值。
基本语法:
查看所有的key: keys *
普通设置: set key value
设置并加过期时间: set key value EX 30 表示30秒后过期
获取数据: get key
删除指定数据: del key
删除全部数据: flushall
查看类型: type key
设置过期时间: expire key 20 表示指定的key5秒后过期
2、Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
基本语法:
列表右侧增加值: rpush key value
列表左侧增加值: lpush key value
右侧删除值: rpop key
左侧删除值: lpop key
获取数据: lrange key
删除指定数据: del key
删除全部数据: flushall
查看类型: type key
3、Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。它和列表的最主要区别就是没法增加重复值
基本语法:
给集合增数据: sadd key value
删除集合中的一个值: srem key value
获取数据: smembers key
删除指定数据: del key
删除全部数据: flushall
4、Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。
基本语法:
设置值hmset : hmset zhangsan name "张三" age 20 sex “男”
设置值hset : hset zhangsan name "张三"
获取数据: hgetall key
删除指定数据: del key
删除全部数据: flushall
5、Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。
发布
client.publish('testPublish', 'message from publish.js');
订阅
client.subscribe('testPublish');
client.on('message', function(channel, msg){
console.log('client.on message, channel:', channel, ' message:', msg);
});
Nestjs Redis 官方文档:https://github.com/kyknow/nestjs-redis 1、安装redis
npm install nestjs-redis --save
2、用到redis的模块中注册RedisModule
options是一个对象,里面配置了连接redis服务器的信息
import { RedisModule} from 'nestjs-redis'
@Module({
imports: [
RedisModule.register(options)
],
})
//关于options
let options={
port: 6379,
host: '127.0.0.1',
password: '',
db: 0
}
3、创建一个cache.service.ts 服务 封装操作redis的方法
import { Injectable } from '@nestjs/common';
import { RedisService } from 'nestjs-redis';
@Injectable()
export class CacheService {
private client: any;
constructor(private redisService: RedisService) {
this.getClient();
}
private async getClient() {
this.client = await this.redisService.getClient();
}
/**
* @Description: 封装设置redis缓存的方法
* @param key {String} key值
* @param value {String} key的值
* @param seconds {Number} 过期时间
* @return: Promise
*/
public async set(key: string, value: any, seconds?: number): Promise {
value = JSON.stringify(value);
if (!this.client) {
await this.getClient();
}
if (!seconds) {
await this.client.set(key, value);
} else {
await this.client.set(key, value, 'EX', seconds);
}
}
/**
* @Description: 设置获取redis缓存中的值
* @param key {String}
*/
public async get(key: string): Promise {
if (!this.client) {
await this.getClient();
}
let data = await this.client.get(key);
if (data) {
return JSON.parse(data);
} else {
return null;
}
}
/**
* @Description: 根据key删除redis缓存数据
* @param key {String}
* @return:
*/
public async del(key: string): Promise {
if (!this.client) {
await this.getClient();
}
await this.client.del(key);
}
/**
* @Description: 清空redis的缓存
* @param {type}
* @return:
*/
public async flushall(): Promise {
if (!this.client) {
await this.getClient();
}
await this.client.flushall();
}
}
4、调用cache.service.ts 里面封装的方法操作redis数据库