redis中文文档(二)——Redis的快速使用及安装

Redis 中文文档

开始使用Redis

如何使用Redis启动和运行

这是Redis入门指南。您将学习如何安装、运行Redis服务器进程并进行实验。

安装Redis

如何安装Redis取决于您的操作系统,以及您是否希望将其与Redis Stack和Redis UI捆绑安装。请参阅下面最适合您需求的指南:

一旦Redis启动并运行,并且可以使用reds-cli进行连接,就可以继续执行以下步骤。

通过CLI探索Redis

外部程序使用TCP套接字和Redis特定协议(RESP)与Redis进行通信。该协议在Redis客户端库中实现,用于不同的编程语言。然而,为了简化Redis的黑客攻击,Redis提供了一个命令行实用程序,可以用来向Redis发送命令。这个程序叫做redis-cli。

要检查Redis是否正常工作,首先要做的是使用reds-cli发送一个PING命令:

$ redis-cli ping
PONG

运行redis-cli,后跟一个命令名及其参数,会将此命令发送到本地主机6379端口上运行的redis实例。您可以更改reds-cli使用的主机和端口,只需尝试–help选项即可检查使用情况信息。

另一种有趣的运行redis-cli的方法是不带参数:程序将以交互模式启动。您可以键入不同的命令并查看它们的答复。(常用

$ redis-cli
redis 127.0.0.1:6379> ping
PONG
redis 127.0.0.1:6379> set mykey somevalue
OK
redis 127.0.0.1:6379> get mykey
"somevalue"

此时,您可以与Redis进行对话。现在是暂停本教程并花开始15分钟介绍的Redis数据类型的适当时机,以便学习一些Redis命令。否则,如果你已经知道一些基本的Redis命令,你可以继续阅读。

保护Redis

默认情况下,Redis绑定到所有接口(bind 0.0.0.0),并且根本没有身份验证。如果你在一个非常受控的环境中使用Redis,与外部互联网分离,通常与攻击者分离,那没关系。然而,如果一个未经保护的Redis暴露在互联网上,这将是一个巨大的安全问题。如果您不能100%确定您的环境是否正确安全,请检查以下步骤,以使Redis更安全,这些步骤是按照提高安全性的顺序排列的。

  1. 确保Redis用于监听连接的端口(默认情况下为6379,如果您在集群模式下运行Redis,则为16379,Sentinel为26379)是被防火墙保护的,因此无法从外部连接Redis。
  2. 使用设置了bind指令的配置文件,以确保Redis只侦听您正在使用的网络接口。例如,如果您只是从同一台计算机本地访问Redis,则仅使用环回接口(127.0.0.1),依此类推。
  3. 使用requirepass选项可以添加额外的安全层,以便客户端需要使用AUTH命令进行身份验证。
  4. 如果您的环境需要加密,请使用spiped或其他SSL隧道软件(tunneling software)来加密Redis服务器和Redis客户端之间的通道。

请注意,在没有任何安全性的情况下暴露在互联网上的Redis实例很容易被利用,所以请确保您理解以上内容,并至少应用一个防火墙层。防火墙就位后,尝试从外部主机连接redis-cli,以证明该实例实际上是不可访问的。

在应用程序中使用Redis

当然,仅仅从命令行界面使用Redis是不够的,因为目标是从应用程序中使用它。为了做到这一点,您需要下载并安装适用于您的编程语言的Redis客户端库。您将在此页面中找到不同语言的客户端的完整列表.

Redis持久化

你可以在这个页面上了解Redis持久性是如何工作的,但要快速入门,重要的是要理解的是,默认情况下,如果你用默认配置启动Redis,Redis只会不时地自发保存数据集(例如,如果你的数据至少有100个更改,至少五分钟后),因此,如果您希望数据库保持不变并在重新启动后重新加载,请确保每次强制执行数据集快照时都手动调用SAVE命令。否则,请确保使用shutdown命令关闭数据库:(使用shutdown关闭数据库会自动保存数据集快照)

$ redis-cli shutdown

这样Redis将确保在退出之前将数据保存在磁盘上。强烈建议阅读持久化页面,以便更好地了解Redis持久性的工作原理。

更正确地安装Redis

从命令行运行Redis只是为了破解一下或进行开发。但是,在某个时刻,您将有一些实际的应用程序要在真实的服务器上运行。对于这种用法,您有两种不同的选择:

  • 使用屏幕运行Redis。
  • 使用init脚本以正确的方式在Linux盒子中安装Redis,这样在重新启动后,一切都会重新正常启动。

强烈建议使用init脚本进行正确安装。以下说明可用于在基于Debian或Ubuntu的发行版中使用Redis 2.4或更高版本附带的init脚本执行正确的安装。

我们假设您已经在/usr/local/bin下复制了redis-server和redis-cli可执行文件。

  • 创建一个目录,用于存储Redis配置文件和数据:

     sudo mkdir /etc/redis
     sudo mkdir /var/redis
    
  • 将您在Redis发行版中utils目录下找到的init脚本复制到/etc/init.d中。我们建议使用您正在运行此Redis实例的端口的名称来调用它。例如:

    sudo cp utils/redis_init_script /etc/init.d/redis_6379
    
  • 编辑init脚本文件

    sudo vi /etc/init.d/redis_6379
    

请确保根据您正在使用的端口相应地修改REDISPORT。pid文件路径和配置文件名都取决于端口号。(init脚本中使用{{REDISPORT}}引用端口来对pid文件路径和配置文件名进行了配置)

  • 将Redis发行版根目录中的模板配置文件复制到/etc/Redis/中,使用端口号作为名称,例如:

    sudo cp redis.conf /etc/redis/6379.conf
    
  • 在/var/redis中创建一个目录,作为redis实例的数据和工作目录:

    sudo mkdir /var/redis/6379
    
  • 编辑配置文件,确保执行以下更改:

    • Set daemonize to yes (by default it is set to no).
    • Set the pidfile to /var/run/redis_6379.pid (modify the port if needed).
    • Change the port accordingly. In our example it is not needed as the default port is already 6379.
    • Set your preferred loglevel.
    • Set the logfile to /var/log/redis_6379.log
    • Set the dir to /var/redis/6379 (very important step!)
  • 最后,使用以下命令将新的Redis-init脚本添加到所有默认运行级别:

    sudo update-rc.d redis_6379 defaults
    

你完成了之后!现在,您可以尝试使用以下命令运行实例:

sudo /etc/init.d/redis_6379 start

确保一切正常:

  • Try pinging your instance with redis-cli.
  • Do a test save with redis-cli save and check that the dump file is correctly stored into /var/redis/6379/ (you should find a file called dump.rdb).
  • Check that your Redis instance is correctly logging in the log file.
  • 如果这是一台新机器,你可以毫无问题地尝试它,请确保重新启动后一切正常。

注意:以上说明并不包括您可以更改的所有Redis配置参数,例如,使用AOF持久性而不是RDB持久性,或者设置复制,等等。请确保阅读示例redis.conf文件(该文件有大量注释)。

安装Redis

在Linux、macOs 和 Windows 上安装 Redis

Install Redis on Linux

How to install Redis on Linux

大多数主要的Linux发行版都为Redis提供软件包。

Install on Ubuntu/Debian

您可以从官方的 official.redis.io APT存储库安装Redis的最新稳定版本。

前提条件

如果你运行的是一个非常小的发行版(比如Docker容器),你可能需要先安装lsb-release、curl和gpg:

sudo apt install lsb-release curl gpg

将存储库添加到apt索引,更新它,然后安装:

curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg

echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list

sudo apt-get update
sudo apt-get install redis
从Snapcraft安装

Snapcraft商店(Snapcraft store)提供Redis软件包(Redis packages),这些软件包可以安装在支持snap的平台上。Snap在大多数主要的Linux发行版上都受支持并可用。

要通过快照(via snap)进行安装,请运行:

sudo snap install redis

如果您的Linux当前没有安装快照(Installing snapd),请按照安装快照中所述的说明进行安装。

Install Redis on macOS

Use Homebrew to install and start Redis on macOS

本指南向您展示如何使用Homebrew在macOS上安装Redis。Homebrew是在macOS上安装Redis的最简单方法。如果您更喜欢从macOS上的源文件构建Redis,请参阅从源代码安装Redis

前提条件

首先,确保安装了Homebrew。从终端运行:

brew --version

如果此命令失败,则需要按照Homebrew的安装说明进行操作

安装

从终端运行:

brew install redis

This will install Redis on your system.

在前台启动和停止Redis

要测试您的Redis安装,您可以从命令行运行Redis服务器可执行文件:

redis-server

如果成功,您将看到Redis的启动日志,Redis将在前台运行。

要停止Redis,请输入Ctrl-C。

使用launchd启动和停止Redis

作为在前台运行Redis的替代方案,您也可以使用launchd在后台启动进程:

brew services start redis

这将启动Redis并在登录时重新启动它。您可以通过运行以下程序来检查launchd管理的Redis的状态:

brew services info redis

如果服务正在运行,您将看到如下输出:

redis (homebrew.mxcl.redis)
Running: ✔
Loaded: ✔
User: miranda
PID: 67975

要停止服务,请运行:

brew services stop redis
连接Redis

Redis运行后,您可以通过运行Redis-cli对其进行测试:

redis-cli

这将打开Redis REPL。尝试运行一些命令:

127.0.0.1:6379> lpush demos redis-macOS-demo
OK
127.0.0.1:6379> rpop demos
"redis-macOS-demo"
Next steps

Once you have a running Redis instance, you may want to:

  • Try the Redis CLI tutorial(教程)
  • Connect using one of the Redis clients

Install Redis on Windows

Use Redis on Windows for development

Redis在Windows上不受官方支持。但是,您可以按照以下说明在Windows上安装Redis进行开发。

要在Windows上安装Redis,首先需要启用WSL2(Windows Linux子系统)。WSL2允许您在Windows上以本机方式运行Linux二进制文件。要使此方法工作,您需要运行Windows 10 2004版及更高版本或Windows 11。

安装或启用WSL2

Microsoft提供了有关安装WSL的详细说明。按照以下说明进行操作,并注意它安装的默认Linux发行版。本指南假设使用Ubuntu。

安装Redis

一旦你在Windows上运行Ubuntu,你就可以按照在Ubuntu/Debian上安装 中详细介绍的步骤,从官方的 official.redis.io APT存储库安装Redis的最新稳定版本。将存储库添加到apt索引,更新它,然后安装:

curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg

echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list

sudo apt-get update
sudo apt-get install redis

最后,按照如下方式启动Redis服务器:

sudo service redis-server start
连接Redis

您能通过连接 Redis CLI 来测试 Redis server 是否正在运行:

redis-cli 
127.0.0.1:6379> ping
PONG

Install Redis from Source

Compile and install Redis from source

您可以在包括Linux和macOS在内的各种平台和操作系统上从源代码编译和安装Redis。Redis除了一个C编译器和libc之外没有其他依赖项。

Downloading the source files

Redis源文件可从Download页面获得。您可以通过对照redis-hashes git repository中的摘要来检查这些下载的完整性。

要从Redis下载站点获取Redis最新稳定版本的源文件,请运行:

wget https://download.redis.io/redis-stable.tar.gz
编译Redis

要编译Redis,首先是tarball(解压),更改到根目录,然后运行make

tar -xzvf redis-stable.tar.gz
cd redis-stable
make

If the compile succeeds, you’ll find several Redis binaries in the src directory, including:

  • redis-server: the Redis Server itself
  • redis-cli is the command line interface utility to talk with Redis.

To install these binaries in /usr/local/bin, run:

make install
Starting and stopping Redis in the foreground

Once installed, you can start Redis by running

redis-server

If successful, you’ll see the startup logs for Redis, and Redis will be running in the foreground.

To stop Redis, enter Ctrl-C.

Install Redis Stack

How to install Redis Stack

Install Redis Stack on Windows

How to install Redis Stack on Windows

要在Windows上安装Redis Stack,您需要安装Docker。当Docker启动并运行时,打开Windows PowerShell,并按照在Docker上运行Redis Stack.中描述的说明进行操作。然后,使用Docker连接reds-cli,如该主题中所述。

关于在Windows中使用WSL和Ubuntu

如果您试图使用Windows Subsystem for Linux(WSL)或Ubuntu for Windows来遵循Linux说明,您将收到一个systemd错误,告诉您系统尚未以systemd作为init System(PID 1)启动。无法操作。不要担心。只需使用Docker。

systemd是Linux系统的一套基本构建块。有关其功能的更多信息,请参阅系统和服务管理器 。由于WSL上缺乏对Linux工作流的支持,这成为了一个问题。但是,您可以测试Systemd中列出的说明。WSL中现在提供了支持!。让我们知道你是如何做到的。

Run Redis Stack on Docker

How to install Redis Stack using Docker

要开始使用Docker使用Redis Stack,首先需要选择一个Docker镜像:

  • redis/redis-stack 同时包含redis stack server和RedisInsight。这个容器最适合本地开发,因为您可以使用嵌入式RedisInsight来可视化您的数据。
  • redis/redis-stack-serve 仅提供redis stack server。此容器最适合生产部署。
快速开始
redis/redis-stack-server

To start Redis Stack server using the redis-stack-server image, run the following command in your terminal:

docker run -d --name redis-stack-server -p 6379:6379 redis/redis-stack-server:latest
redis/redis-stack

To start a Redis Stack container using the redis-stack image, run the following command in your terminal:

docker run -d --name redis-stack -p 6379:6379 -p 8001:8001 redis/redis-stack:latest

上面的docker run命令还公开了端口8001上的RedisInsight。您可以通过将浏览器指向localhost:8001来使用RedisInsight。

配置
Persistence in Docker

要将目录或文件挂载到Docker容器,请指定-v来配置本地卷。此命令将所有数据存储在本地目录本地数据中:

$ docker run -v /local-data/:/data redis/redis-stack:latest
Ports

如果您想在不同的端口上公开Redis Stack server或RedisInsight,请更新-p参数部分的左侧。此命令公开端口10001上的Redis Stack服务器和端口13333上的RedisInsight:

$ docker run -p 10001:6379 -p 13333:8001 redis/redis-stack:latest
Config files

默认情况下,Redis Stack Docker容器使用Redis的内部配置文件。要使用本地配置文件启动Redis,可以使用-v volume选项:

$ docker run -v `pwd`/local-redis-stack.conf:/redis-stack.conf -p 6379:6379 -p 8001:8001 redis/redis-stack:latest
Environment variables

To pass in arbitrary configuration changes, you can set any of these environment variables:

  • REDIS_ARGS: extra arguments for Redis
  • REDISEARCH_ARGS: arguments for the search and query features (RediSearch)
  • REDISJSON_ARGS: arguments for JSON (RedisJSON)
  • REDISTIMESERIES_ARGS: arguments for time series (RedisTimeSeries)
  • REDISBLOOM_ARGS: arguments for the probabilistic data structures (RedisBloom)

For example, here’s how to use the REDIS_ARGS environment variable to pass the requirepass directive to Redis:

docker run -e REDIS_ARGS="--requirepass redis-stack" redis/redis-stack:latest

An example of setting Redis persistence:

docker run -e REDIS_ARGS="--save 60 1000 --appendonly yes" redis/redis-stack:latest

Here’s how to set a retention policy for time series:以下是如何为时间序列设置保留策略:

docker run -e REDISTIMESERIES_ARGS="RETENTION_POLICY=20" redis/redis-stack:latest

Install Redis Stack on Linux

How to install Redis Stack on Linux

Learn how to install Redis Stack on Linux from the official repository, RPM feed, with snap, or AppImage.

From the official Debian/Ubuntu APT Repository

You can install recent stable versions of Redis Stack from the official packages.redis.io APT repository. The repository currently supports Debian Bullseye (11), Ubuntu Bionic (18.04), Ubuntu Focal (20.04), and Ubuntu Jammy (22.04) on x86 and arm64 processors. Add the repository to the apt index, update it, and install it:

curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
sudo chmod 644 /usr/share/keyrings/redis-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
sudo apt-get update
sudo apt-get install redis-stack-server
From the official RPM Feed

You can install recent stable versions of Redis Stack from the official packages.redis.io YUM repository. The repository currently supports RHEL7/CentOS7, and RHEL8/Centos8. Add the repository to the repository index, and install the package. Note: amazonlinux2 should use the RHEL7/CentOS7 repository.

Create the file /etc/yum.repos.d/redis.repo with the following contents

[Redis]
name=Redis
baseurl=http://packages.redis.io/rpm/rhel7
enabled=1
gpgcheck=1
curl -fsSL https://packages.redis.io/gpg > /tmp/redis.key
sudo rpm --import /tmp/redis.key
sudo yum install epel-release
sudo yum install redis-stack-server
With snap

From Download, get the latest Stack snap package.

To install, run:

sudo snap install --dangerous --classic <snapname.snap>
With AppImage

From Download, get the latest Stack AppImage package.

Enable the install:

chmod a+x <AppImagefile>

To install, run

./<appimagefile>

Install Redis Stack with binaries

How to install Redis Stack using tarballs
Start Redis Stack Server

After untarring or unzipping your redis-stack-server download, you can start Redis Stack Server as follows:

/path/to/redis-stack-server/bin/redis-stack-server
Add the binaries to your PATH

You can add the redis-stack-server binaries to your $PATH as follows:

Open the file ~/.bashrc or ~/zshrc (depending on your shell), and add the following lines.

export PATH=/path/to/redis-stack-server/bin:$PATH

If you have an existing Redis installation on your system, then you can choose override those override those PATH variables as before, or you can choose to only add redis-stack-server binary as follows:

export PATH=/path/to/redis-stack-server/bin/redis-stack-server:$PATH

If you’re running redis-stack-server on a mac, please ensure you have openssl installed, via homebrew.

Now you can start Redis Stack Server as follows:

redis-stack-server

Redis常见问题解答

开始使用Redis时的常见问题
Redis与其他键值存储有何不同?
  • Redis在键值DB中有一条不同的进化路径,其中的值可以包含更复杂的数据类型,并在这些数据类型上定义原子操作。Redis数据类型与基本数据结构(fundamental data structures)密切相关(are closely related to),并以这种方式暴露给程序员,而不需要(without)额外的抽象层。
  • Redis是一个内存中但持久存在于磁盘上的数据库,因此它代表了一种不同的折衷方案,即在数据集不能大于内存的限制下实现非常高的写入和读取速度。内存数据库的另一个优点是,与磁盘上相同的数据结构相比,复杂数据结构在内存中更容易操作,因此Redis可以在几乎没有内部复杂性的情况下做很多事情。同时,磁盘上的两种存储格式(RDB和AOF)不需要适合随机访问,因此它们是紧凑的,并且总是以仅追加的方式生成(即使AOF日志旋转也是仅追加的操作,因为新版本是从内存中的数据副本生成的)。然而,与传统的磁盘存储相比,这种设计也涉及到不同的挑战。作为内存上的主要数据表示,Redis操作必须小心处理,以确保磁盘上始终有更新版本的数据集。
Redis的内存占用量是多少?

举几个例子(全部使用64位实例获得):

  • 一个空实例使用大约3MB的内存。
  • 100万个小键->字符串值对使用大约85MB的内存。
  • 100万个键->哈希值,表示一个有5个字段的对象,使用约160 MB的内存。

测试您的用例是微不足道的。使用redis基准测试实用程序生成随机数据集,然后检查INFO内存命令使用的空间。

64位系统将使用比32位系统多得多的内存来存储相同的密钥,尤其是在密钥和值较小的情况下。这是因为指针在64位系统中占用8个字节。但当然,优势在于64位系统中可以有大量内存,因此为了运行大型Redis服务器,或多或少需要64位系统。另一种选择是分片。

为什么Redis将其整个数据集保存在内存中?

过去,Redis开发人员尝试使用虚拟内存和其他系统,以允许使用比RAM更大的数据集,但毕竟,如果我们能做好一件事,我们会很高兴:数据由内存提供,磁盘用于存储。因此,目前还没有为Redis创建磁盘后端的计划。毕竟,Redis的大部分内容是其当前设计的直接结果。

如果您真正的问题不是所需的总RAM,而是需要将数据集拆分为多个Redis实例,请阅读本文档中的分区页面以了解更多信息。

赞助Redis开发的Redis有限公司(Redis Ltd.)开发了一个“Flash上的Redis”解决方案,该解决方案使用混合RAM/Flash方法处理具有偏见访问模式的较大数据集。您可以查看他们的产品以了解更多信息,但此功能不是开源Redis代码库的一部分。

你能将Redis与基于磁盘的数据库一起使用吗?

是的,一种常见的设计模式包括将Redis中写得很重的小数据(以及您需要Redis数据结构以有效的方式对问题进行建模的数据)和大块数据放入SQL或最终一致的磁盘数据库中。类似地,有时使用Redis是为了在内存中获取存储在磁盘上数据库中的相同数据子集的另一个副本。这看起来可能类似于缓存,但实际上是一个更高级的模型,因为通常Redis数据集与磁盘上的DB数据集一起更新,而不是在缓存未命中时刷新。

如何减少Redis的整体内存使用量?

如果可以的话,可以使用Redis 32位实例。还要充分利用小散列、列表、排序集和整数集,因为Redis能够以更紧凑的方式在少数元素的特殊情况下表示这些数据类型。内存优化页面中有更多信息。

如果Redis内存不足怎么办?

Redis内置保护,允许用户设置内存使用的最大限制,使用配置文件中的maxmemory选项来限制Redis可以使用的内存。如果达到此限制,Redis将开始回复写入命令的错误(但将继续接受只读命令)。

您还可以将Redis配置为在达到最大内存限制时收回密钥。有关此方面的详细信息,请参阅驱逐政策文档。

在Linux上后台保存失败并出现fork()错误?

简短回答:echo 1>/proc/sys/vm/overcommit_memory:)

现在是长的一个:

Redis后台保存模式依赖于现代操作系统中fork系统调用的写时复制语义:Redis forks(创建一个子进程)是父进程的精确副本。子进程将DB转储到磁盘上并最终退出。理论上,子进程应该使用与作为副本的父进程一样多的内存,但实际上,由于大多数现代操作系统实现了写时复制语义,父进程和子进程将共享共同的内存页。只有当页面在子级或父级中发生更改时,才会复制该页面。由于理论上所有页面都可能在子进程保存时发生变化,Linux无法提前告知子进程将占用多少内存,因此如果overcommit_memory设置为零,则fork将失败,除非有足够多的可用RAM来真正复制所有父内存页面。如果你有一个3 GB的Redis数据集,只有2 GB的可用内存,它就会失败。

overcommit_memory设置为1告诉Linux以一种更乐观的分配方式放松并执行fork,这确实是Redis所需要的。

有关可用值的解释,可以参考proc(5)手册页。

Redis磁盘快照是原子快照吗?

是的,Redis后台保存过程总是在服务器处于命令执行之外时分叉的,因此从磁盘快照的角度来看,RAM中报告为原子的每个命令也是原子的。

Redis如何使用多个CPU或内核?

CPU成为Redis的瓶颈并不常见,因为通常Redis要么是内存绑定,要么是网络绑定。例如,当使用流水线时,运行在Linux系统上的Redis实例平均每秒可以发送100万个请求,因此,如果您的应用程序主要使用O(N)或O(log(N))命令,那么它几乎不会使用太多CPU。

然而,为了最大限度地提高CPU使用率,您可以在同一个盒子中启动多个Redis实例,并将它们视为不同的服务器。在某种程度上,一个盒子可能无论如何都不够,所以如果你想使用多个CPU,你可以更早地开始考虑一些分片的方法。

您可以在分区页面中找到有关使用多个Redis实例的更多信息。

从4.0版本开始,Redis已经开始实现线程操作。目前,这仅限于删除后台的对象和阻止通过Redis模块实现的命令。对于后续版本,计划是让Redis变得越来越线程化。

一个Redis实例最多可以容纳多少个密钥?哈希、列表、集合和排序集合中的最大元素数是多少?

Redis最多可以处理2^32个密钥,并且在实践中测试每个实例至少可以处理2.5亿个密钥。

每个散列、列表、集合和排序集合都可以包含2^32个元素。

换句话说,您的限制可能是系统中的可用内存。

为什么我的复制副本的主实例具有不同数量的密钥?

如果您使用寿命有限的密钥(Redis过期),这是正常行为。发生的情况如下:

  • 主数据库在与副本的第一次同步时生成一个RDB文件。
  • RDB文件将不包括主文件中已过期但仍在内存中的密钥。
  • 即使在逻辑上过期,这些密钥仍在Redis主服务器的内存中。它们将被认为是不存在的,它们的内存稍后将被回收,无论是递增的还是显式的访问。虽然这些键在逻辑上不是数据集的一部分,但它们在INFO输出和DBSIZE命令中都有说明。
  • 当副本读取主生成的RDB文件时,将不会加载这组密钥。

正因为如此,拥有许多过期密钥的用户在副本中看到的密钥较少是很常见的。但是,从逻辑上讲,主副本和复制副本将具有相同的内容。

“Redis”这个名字是从哪里来的?

Redis是REmote DIctionary Server的缩写。

为什么Salvatore Sanfilippo启动Redis项目?

Salvatore最初创建Redis是为了扩展实时日志分析工具LLOGG。但在基本的Redis服务器工作后,他决定与其他人分享这项工作,并将Redis变成一个开源项目。

Redis怎么发音?

“Redis”的发音类似于“red”加上不带“k”的“kiss”。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值