什么是 Redis
Redis 是一种数据库,不过更准确地来说,它更像一台结构化地数据服务器,从定义上来说相比 MySQL 更接近 MongoDB。
和操作表中的行或者集合中的文档不同,在 Redis 中是通过键来访问数据的。因此,可以将 Redis 想象成是通过如下所示的 JavaScript 对象的方式来存储数据的:
{
'key': 'some value',
'key2': 'some other value'
}
不过,正因为它是一个结构化的数据服务器,能存储的值自然不仅仅是简单的字符。如下都是 Redis 支持的数据类型:
- 字符串(string)
- 列表(list)
- 数据集(set)
- 哈希(hash)
- 有序数据集(sorted set)
安装 Redis
Redis 官方以 tar 包的形式发布,包含所有源代码,支持 Mac OS X 和 Linux。
redis下载页面
对于 Windows,也有非官方但维护得很好得版本。
windows版本readis下载(GitHub):https://github.com/tporadowski/redis/releases
在安装时记得勾选将 Redis 添加到全局环境。
安装成功后,打开终端,输入一下命令
redis-cli
进入交互模式就证明安装成功了,此时可以输入指令操作 Redis 了。
127.0.0.1 是本机 IP;6379 是 Redis 默认的端口号。
Redis的基础操作
写入
写入数据使用 set 指令
set key value
key 是键名,value 是值。
读取
读取数据使用 get 。
get key
key 是键名。
查看所有key
如果你不清楚当前存了什么 key ,可以使用 keys * 来查询所有 key
keys *
如果你有多个 key ,用上面的语句可以将所有 key 都列出来。
删除
删除使用 del 。
del key
我把刚刚创建的 name 这条数据给删掉了。
此时使用 get 或者 keys * 都差不回 name 这条数据了。
Redis 和 Node
Node 进程中,会有两大缺点,如下所示。
- 应用程序永远都无法享受到多线程带来得好处。随着应用程序负载不断增长,单进程无法承受所有得负载,我们需要将应用程序扩展到多进程或者多台计算机。
- 每次重启应用都会丢失 session 数据:比如,在部署新代码得时候总是需要重启的。
Redis 还有许多其他非常重要的好处,比如:多种编程语言间的协同、持久化以及其他一些通过书写完整的数据存储方案才能获取的特性。
NodeJS 操作 Redis
安装 redis 依赖
npm install redis
基础操作
import { createClient } from 'redis';
// 链接格式:redis[s]://[[username][:password]@][host][:port][/db-number]
const client = createClient({
url: 'redis://root:123456@127.0.0.1:6379'
});
client.on('error', (err) => console.log('Redis Client Error', err));
await client.connect();
// 写入数据
await client.set('key', 'value');
// 读取数据
const value = await client.get('key');
// 立即强制关闭客户端与Redis的连接
await client.disconnect();