什么是Redis?如何安装和基本命令

作者:米林德·索里亚

什么是Redis?

Redis代表远程字典服务,是一个内存中的数据库,延迟可以小于1毫秒。

Redis的强大之处在于它将数据存储在RAM中,而不是存储在速度较慢的硬盘上。Redis数据库中的每个数据点都是一个键值对。

该值可以是以下任何字段:

  1. String: "Hello World"
  2. Bitmap: 0011001
  3. Bitfield: {325}{655}{678}
  4. Hash: {a: "Hello", b: "World"}
  5. List: [ A > B > C ]
  6. Set: { A, B, C}
  7. Sorted set: {A: 1, B: 2, C: 3}
  8. Geo-spatial: {A:(52, 2, 3)}
  9. Hyperlog
  10. Stream

为什么要使用Redis?

Redis 之所以如此受欢迎,是因为它的速度。

与数据存储在速度较慢的硬盘上的关系数据库不同,Redis 将数据存储在 RAM 中,这要快得多。Redis 访问数据需要几毫秒,而使用传统方法需要数百毫秒。

正是因为它使用的是 RAM,所以这意味着,当系统关闭时,Redis数据也会丢失。因此,Redis 通常用于缓存,而不是像 MongoDb 或 PostgresSQL 这样的持久数据库。

Redis不能替代传统的基于硬盘的数据库,但是它可以补充现有的数据库。

当您有需要频繁访问的数据时,就可以使用Redis。

如何安装Redis?(基于服务器控制台面板)

Ubuntu系统:

$ sudo add-apt-repository ppa:redislabs/redis
$ sudo apt-get update
$ sudo apt-get install redis Mac:
brew update
brew install redis Windows: 下载地址:https://redislabs.com/blog/redis-on-windows-10/

如何使用 Redis 提高应用程序的性能

首先,安装Redis:

npm i redis

启动Redis服务器:

redis-server

导入Redis包并创建和实例:

// Import Redis
const Redis = require('redis')

// Create a Redis client for local development
const redisClient = Redis.createClient()
// Or for production, pass in your production instance's URL 
const redisClient = Redis.createClient({ url: "your-production-url"})

然后,您可以使用该redisClient实例执行本文前面提到的所有操作。例如:

redisClient.setex('photos', 3600, JSON.stringyfy(some-value-to-store))

如果没有Redis的缓存,此代码需要大约480ms来获取数据的900KB:

app.get("/photos", async(req, res) => {
    const albumId = req.query.albumId
    const { data } = await axios.get(
        "https://jsonplaceholder.typicode.com/photos"
        { params: { albumId }}
    )
})

添加Redis缓存后,第一次获取照片仍然需要大约480毫秒才能获取900kB的数据。但在那之后,每个后续的 fetch 只需要大约37ms

// Import redis package
const Redis = require('redis');

// Create redis client, in case ofer development only
const redisClient = Redis.createClient();
// Incase of production pass your production instance url and use the below line
const redisClient = Redis.createClient({ url: 'your-production-url' });

app.get('/photos', async (req, res) => {
  const albumId = req.query.albumId;
  redisClient.get('photos', async (error, photos) => {
    if (error) console.error(error);
    if (photos != null) {
      return res.json(JSON.parse(photos));
    } else {
      const { data } = await axios.get('https://jsonplaceholder.typicode.com/photos', {
        params: { albumId }
      });
      redisClient.setex('photos', 3600, JSON.stringyfy(data));
      res.json(data);
    }
  });
});

在上面的例子中,它首先检查你是否已经在你的 Redis 缓存中缓存了一张照片。如果已缓存,则返回缓存值。否则,照片将从 API 中获取。

补充:Redis官网 命令行目录:https://redis.io/commands

点击阅读原文

本文来自投稿,不代表微擎百科立场,如若转载,请注明出处:https://www.w7.wiki/develop/5288.html

发表评论

登录后才能评论