暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

[译文]从Administration和管理视角看 Redis 与 Memcached

原创 小小亮 2021-08-16
400

在这篇博文中,我们将对 Redis 和 Memcached 进行类似的比较,但从Administration和管理视角来看。对于那些不熟悉这些技术的人,本文将为您提供一些有关在生产环境中管理缓存层的常见操作方面的见解。


命令行工具


CLI 或命令行界面是一种基于文本的界面,用于通过在界面中键入命令并以相同方式接收响应来与软件和操作系统交互。从操作的角度来看,大多数数据库操作员(系统管理员、DBA 或 DevOps 工程师)更喜欢使用基于 CLI 的客户端工具来实现与服务器的更快交互、丰富的功能、通过脚本编写的自动化以及对服务的精细控制。


Redis 带有名为redis-cli 的 CLI它是一个非常简单但功能强大的与 Redis 服务器交互的工具,并带有自动完成功能。如果使用本地实例,主机为localhost,默认端口为6379,默认没有密码:


1
$ redis-cli

Redis的-CLI并不像其他CLI。除了标准的键/值数据存储管理之外,它还可以做很多有趣的事情,例如:


  • 使用 -r 和 -i 参数在执行之间使用用户选择的暂停执行指定次数的相同命令。

  • 远程创建 RDB 文件的备份。

  • 模拟从站并打印它从主站接收的复制流。

  • 检查 Redis 服务器的延迟并显示统计数据,甚至是延迟样本和频率的 ASCII 艺术频谱图。

除了 redis-cli,Redis 还附带了一个名为redis-benchmark的基准测试工具该工具可用于模拟客户端在发送多个查询的同时执行的运行命令。它类似于 Apache 的 ab 实用程序。


Memcached 没有官方 CLI。通过 telnet 直接通信通常是通过 CLI 与服务器交互的最佳方式。考虑到 Memcached 正在侦听主机 192.168.10.2 上的端口 11211,可以使用以下命令进行连接:

1
$ telnet 192.168.10.2 11211

对于脚本处理,您可能需要使用“ netcat”或“nc”命令。例如:


1
{script to generate commands} | nc {memcached host} {memcached port} | {script to process output}

例如:


1
2

(echo stats; echo quit) | nc 192.168.10.2 11211 | grep get_hits

STAT get_hits 0


然而,正在开发的 Perl 脚本——memcached -tooldamemtop——在脚本目录下带有源代码。如果您从操作系统存储库安装它,它通常位于 /usr/share/memcached/scripts 目录下。不能保证这些脚本的使用,因此在使用它们时要小心。


对于基准测试,memaslap是一个用于 Memcached 服务器的负载生成和基准测试工具。有一个名为mc-benchmark的项目,它是 redis-benchmark 到 Memcached 协议的直接端口,如果您想比较 Redis 和 Memcached 以进行苹果对苹果的比较。


如您所见,两者都对其命令行客户端使用了不同的方法。Redis 在这方面更胜一筹,因为它提供了一组非常方便的命令行选项,可以轻松管理服务器。



图形用户界面工具



GUI,或图形用户界面,是一种基于视觉的界面,其特点是使用图形图像,包括窗口、图标和菜单。尽管有时会使用键盘,但鼠标是最常用的 GUI 导航方式。从操作的角度来看,大多数数据库操作员(SysAdmin、DBA 或 DevOps 工程师)更喜欢使用基于 GUI 的客户端工具来实现与可视化相关的目的,例如数据库管理、监控和统计、报告和分析,以及更合适的远程访问最终用户的客户。


市场上有几种 GUI 工具可用于管理 Redis 和 Memcached,例如FastoNoSQL,这是一种流行的 NoSQL 开源 IDE 工具,支持 Windows、Linux、MacOSX、Android 和 FreeBSD 等大多数著名平台。


对于 Redis,RedisInsight可能是最好和最受欢迎的 Redis GUI 工具,它支持许多特定于 Redis 的功能,如 Streams、RedisGraph、RedisTimeSeries、RedisJSON、RediSearch 和 RedisGears。它还带有一个直观的基于 Web 的 CLI,具有语法突出显示和自动完成功能,并采用集成帮助提供直观的帮助。还有许多其他的 Redis 管理工具开源项目,如phpRedisAdminRedis CommanderPHPRedMin


对于 Memcached,有几个专门用于 Memcached 的 GUI 开源项目,如PHPMemcachedAdminMemchaced Dashboard(是的,注意拼写)。尽管没有 Redis 那么多选项,但考虑到 Memcached 的简单设置和功能,这些工具可以完成大部分工作。


所有这些提到的工具也可以在 Docker 中使用,这意味着它们可以通过容器编排工具(如 Kubernetes 和 Docker Swarm)轻松容器化和管理。



备份还原


尽管 Redis 或 Memcached 主要用于内存中缓存临时数据,但备份和执行还原是获取数据快照以用于恢复、迁移和冗余目的的常见管理任务。它经常发生在缓存层对您的应用程序变得非常重要时,缓存层的停机时间可能会影响大多数用户体验。通过备份,您可以使用预热缓存轻松恢复失败的缓存实例。这是在不牺牲任何缓存数据的情况下停止/启动/重新启动缓存服务器的已知最佳实践。


Redis 数据存储可以通过复制 RDB 文件和 Append-only File (AOF) 文件来备份,以实现完全持久性。请注意,默认情况下,Redis 中禁用了 AOF,因此需要额外的步骤才能启用此功能。对于逻辑备份,例如将活动数据集导出到文本文件中,一些外部工具(如redis-dump和/或node-redis-dump)可能会有所帮助。如果您想了解更多相关信息,我们在另一篇名为Redis 备份工具概述 的博文中详细介绍了 Redis 备份方法


对于 Memcached,有多种使用外部工具实现此目的的方法。您可以使用libmemcached套件中memdumpmemcat实用程序请注意,使用此工具无法保证一致性,因为在一般情况下,无法列出 Memcached 实例存储的所有键,尤其是在数据集很大(数百万个键)的情况下。因此需要一个迭代,如工具的文档页面所示。还有一个名为memcached-util的项目,这是一个更直接的客户端,用于针对 Memcached 实例执行备份和恢复。要执行备份,您可以使用 memcached-util 命令,如下所示:


1
$ memcached-util --addr "192.168.10.2:11211" --op "backup" --filename "memcache_backup.json"

要恢复,只需更改--op 选项即可恢复:


1
$ memcached-util --addr "192.168.10.2:11211" --op "restore" --filename "memcache_backup.json"

如您所见,由于支持持久存储,Redis 官方支持通过其 RDB 和 AOF 文件进行备份和恢复。另一方面,Memcached 需要安装额外的工具,并且一些工具无法保证一致性。如果这在您的环境中是可以容忍的,那么备份和恢复 Memcached 不应成为您组织的运营开销。



服务控制


这两种服务都非常易于操作。安装完成后,只需运行server命令,它就会作为前台进程启动,如下图:


1
2
$ redis-server # For Redis
$ memcached -u memcache # memcached has to run as memcache user


由于 Redis 是单线程的,因此通常运行多个 Redis 实例以利用单个主机上的所有可用 CPU 内核。运行多个 Redis 实例以多次执行redis-server 实用程序的最简单的方法是使用不同的配置文件,例如:


1
2
3
$ redis-server /etc/redis/redis1.conf
$ redis-server /etc/redis/redis2.conf
$ redis-server /etc/redis/redis3.conf


管理每个主机的多个实例可能是一项复杂且有风险的任务。您不想停止或重新启动错误的实例,因此需要非常谨慎的实践来控制 Redis 服务。您可以使用脚本、systemd 或 init 脚本来简化此操作,但这将是 SysAdmin 管理任务的额外开销。


默认情况下,Memcached 是多线程的,并且可以使许多内核饱和,因此通常每个主机运行一个 memcached 将使用所有内核。



升级


两者的服务器软件升级都非常简单。只需通过软件包安装或新版本的源代码重新编译来替换服务器的二进制文件,然后重新启动服务即可。


最后的想法


Redis 和 Memcached 各有优缺点。从管理和管理的角度来看,Redis 远优于上面强调的 Memcached。希望这篇文章可以让您从不同的角度来决定要长期管理哪些键/值数据存储。


文章来源:https://severalnines.com/database-blog/redis-vs-memcached-administration-and-management-perspective


最后修改时间:2021-08-16 13:10:20
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论