雷迪斯

WBOY
WBOY原创
2024-08-10 20:42:33572浏览

雷迪斯

雷迪斯 是一个 NOSQL 数据库,数据以键值对的形式存储。
雷迪斯 将数据存储在主内存上,这意味着它速度快,但易失性,不像 PostgreSQL 等数据库系统将数据存储在磁盘上。

概述

在具有服务器和数据库的应用程序中,访问数据库上的信息会导致延迟。

像redis这样的Key-Value数据库通常保存在这些数据库前面,访问操作需要2个步骤:

  1. 如果信息在缓存中,缓存命中,应用程序从redis中检索信息并发送给客户端
  2. 如果没有,缓存未命中,应用程序从数据库中获取信息,将其发送到客户端并将其存储在缓存中。

通过这两个步骤,并且考虑到主内存的延迟低于磁盘,我们可以说 雷迪斯 可用于存储和访问频繁的、最近的数据和昂贵的操作,从而使应用程序速度提高 10 到 50 倍。

因此,如果您要构建一个未来可扩展的应用程序,雷迪斯(或类似于 雷迪斯 的数据库)是必不可少的。


问题

  1. 雷迪斯 开源吗?:是的,雷迪斯 是开源的,具有特殊类型的许可证,但也有其他替代方案,例如 Snapchat 的 KeyDB 和 Memcached 都是开源的。 KeyDB 是 雷迪斯 的一个分支,但目前只能在 Linux 上运行。

  2. 雷迪斯 支持 Windows 吗?:不,雷迪斯 不支持 Windows,但您可以安装 WSL/Ubuntu,并使用
    安装 redis

sudo apt install redis
  1. 我正在使用 WSL,为什么 redis 服务器无法在我的系统上运行:在 WSL 上运行时,您可以使用以下命令运行 redis-server
redis-server --port 6000

其中 6000 是您要运行它的本地服务器上的端口。 (即 127.0.0.1:6000)。

大多数问题是由于 redis-server 使用的默认端口已被使用

  1. 有 雷迪斯 的客户端库吗?:确实有。您可以在 雷迪斯 网站上找到它们,也可以自己构建一个。

安装雷迪斯

在Linux上,安装redis就像
一样简单

sudo apt install redis
Mac 上的


brew install redis

运行雷迪斯

您需要在 上拥有 2 个终端实例

第一个运行您的服务器

redis-server -port <portnumber>
</portnumber>

在第二个运行你的客户端

redis-cli

构建Web应用程序时,不需要运行客户端但需要运行服务器

雷迪斯 概念

您应该了解 雷迪斯 中的 3 个主要概念或 4

  1. 键值对
  2. 列表
  3. 套装
  4. 哈希值

所有其他数据结构主要是第一个数据结构的高级实现

所谓的列表,我的意思是数组而不是链表,这就是redis的称呼。


键值对

键值对是大多数编程语言中常见的数据结构。

  1. 在 Python 中称为字典或简称 dict

  2. 在 Javascript 中称为 地图

  3. 在 C# 中称为 字典

雷迪斯 中键值对的主要操作有 6 种

Operations Explanations Examples Further Explanation
SET Creates a key-value pair SET name John Sets key to map to value
GET Gets value for key GET name This returns John
DEL Deletes the key value pair DEL name This removesthe key value pair name from the database
EXISTS Checks if a key exists in the redis database EXISTS name returns 1 or 0 corresponding to True or False
FLUSHALL Clears the entire cache FLUSHALL more or less like DROP TABLE in postgres
KEYS * Returns all the keys in the database KEYS *

还有基于时间的操作。在基于时间的操作中,密钥仅在缓存中保存一段设定的时间,时间到期后,缓存会删除该密钥。

有 2 个主要的基于时间的操作

Operations Explanations Examples Further Explanation
EXPIRE Expires a key after being defined EXPIRE name 10 Deletes the key-value name after 10s .The key must be defined with SET before calling EXPIRE . A common alternative is;
SETEX Expires a key upon definition SETEX age 30 15 Sets the key age to value 30 and thereafter deleted the key-value pair after 15s
TTL Time To Live TTL age Returns the time remaining before deletion of the age key

博客太长了,我将讨论列表集合哈希图以及有关redis的可能面试问题 在另一个博客中。

如果您有任何疑问,请在下面评论,我会尽力回答⭐。快乐编码

以上是雷迪斯的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn