目次
1. 安全性
in Redis3. バージョン 2 では、Redis が信頼できる環境で実行されることをより確実にするための保護モードという特別なモードが導入されています。保護モードはデフォルトでオンになっていることに注意してください。
Redis はデータベースパスワード機能を提供します。最初は直接接続できると愚かにも思っていましたが、パスワードがなかったため、非常に危険でした。これがパスワードの設定に使用できることを知ったのは実際に使ってからのことですが、それまでは知りませんでした。注目に値するのは、
については前回の記事でも触れました。 Redis データベースのパスワードは、パラメータ
2.1、Redis主从复制注意事项
3、命名命令
二、通信协议
1、简单协议
1.1、错误回复
1.2、状态回复
1.3、整数回复
1.4、字符串回复
2、统一请求协议
三、管理工具
1、redis-cli
1.1、耗时命令日志
1.2、命令监控
2、Medis
3、phpRedisAdmin
4、Rdbtools
5、命令参考
ホームページ データベース Redis 30 分で Redis の管理方法を学びます

30 分で Redis の管理方法を学びます

Mar 03, 2022 pm 06:08 PM
redis

この記事では、Redis に関する関連知識を提供し、主に Redis 管理ツールの関連問題と Redis データベースの管理方法を紹介します。以下で見てみましょう。皆さん、助かりました。

30 分で Redis の管理方法を学びます

推奨学習: Redis チュートリアル

この記事では、Redis 管理について詳しく説明します。セキュリティや通信プロトコルなどの知識
同時に、それに密接に関係するサードパーティの管理ツールも導入されます。

1. 安全性

安全性というと、私たちは何を思い浮かべますか?
例えば、信頼できる環境は安心感をもたらしますが、慣れない環境は得体の知れない恐怖や孤独を感じます。
もう 1 つの例は、新荘プロジェクトのローカリゼーション置換 (安科置換) です。ここではこれを国荘プロジェクトと呼びます。これは、信頼性、安全性、信頼性、独立性と制御性の目標を達成することを目的としています。

私は安全意識を高めるために、上でたくさん話しました (くだらないことがたくさんあり、疲れました)。

Redis は、創設者がかつて述べたように、シンプルさが美しいです。しかし、セキュリティレベルに関してはあまり多くの作業が行われていません。

ここで 1 つ付け加えておきたいのですが、前回は Redis サービスを正常にシャットダウンする方法について触れませんでした。プロセスを強制終了して制御することもできますが、次の方法を使用してシャットダウンすることをお勧めします:

$ /opt/redis-6.0.8/src/redis-cli shutdown
ログイン後にコピー
1. 信頼できる環境

Redis のセキュリティ設計は、次の前提に基づいています。 「Redisは信頼できる環境で動作する」としました。本番環境 (正式リリース環境) で実行する場合、Redis サーバーへの外部からの直接接続は許可されません。このとき、接続はアプリケーション経由で行う必要があります。信頼できる環境で実行することは、Redis サーバーのセキュリティを確保するための重要な方法です。レディス。

1.1. バインドパラメータ

Redis のデフォルト設定ファイル redis.conf では、ローカル ネットワーク リクエストのみが受け入れられます。ただし、この設定は、構成ファイルの

bind パラメータを変更することで変更できます。デフォルトのバインド設定は、

bind:127.0.0.1
ログイン後にコピー

bind# です。 ## パラメータ 複数の IP アドレスをバインドすることもでき、次の例に示すように、IP アドレスはスペースで区切られます。

# Examples:# bind 192.168.1.100 10.0.0.1# bind 127.0.0.1 ::1
ログイン後にコピー
1.2、保護モード パラメータ

in Redis3. バージョン 2 では、Redis が信頼できる環境で実行されることをより確実にするための保護モードという特別なモードが導入されています。保護モードはデフォルトでオンになっていることに注意してください。

パラメータ設定:

#开启保护模式protected-mode yes#禁止保护模式protected-mode no
ログイン後にコピー

機能

:

保護モードを有効にする: 不在時受信バインド バインドされたネットワーク クライアントがコマンドを送信すると、クライアントがパスワードを設定しない場合、Redis はコマンドの実行に対してエラー拒否 (DENIED) を返します。
  • 保護モードを無効にする:
  • protected-mode no
  • を使用して、構成で保護モードを無効にできます。 セキュリティ: 運用環境の場合、信頼できるクライアントがサーバーに接続できるようにシールド (ファイアウォール) がオンになっていることを確認する必要があります。
  • たとえば、テストするときは、Windows 上の Linux 上の Redis サービスに接続します。テストを容易にするために、この時点で firewalld ファイアウォールを一時的に閉じるか、
firewall-cmd

コマンドを使用して 6379 のデフォルト ポートと Redis サービスを追加します。ファイアウォールに関する知識については、以前の記事を参照してください。 "firewalld および iptables ファイアウォール ツール": <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">#临时关闭防火墙systemctl stop firewalld.service</pre><div class="contentsignin">ログイン後にコピー</div></div>

Note

: Redis 3.2 より前のバージョンでは、デフォルトですべてのネットワーク インターフェイスがバインドされ、ネットワーク (パブリック ネットワークを含む) 上の任意のコンピューターが接続できます。 Redisサーバー。 古いバージョンを使用している人は注意が必要ですので、このパラメータを変更するか、新しいバージョンにアップグレードすることをお勧めします。 2. データベースパスワード

Redis はデータベースパスワード機能を提供します。最初は直接接続できると愚かにも思っていましたが、パスワードがなかったため、非常に危険でした。これがパスワードの設定に使用できることを知ったのは実際に使ってからのことですが、それまでは知りませんでした。注目に値するのは、

6.0 バージョンでは、マルチユーザー権限制御機能

がサポートされているということです。 2.1. Redis のパスワード設定

については前回の記事でも触れました。 Redis データベースのパスワードは、パラメータ

requirepass

によって制御されます。デフォルトの 6.0.8 バージョンは無効になっているため、手動で有効にする必要があります。

#默认禁用掉了#requirepass foobared#启用密码requirepass 123456
ログイン後にコピー
クライアントは、Redis に接続するたびにパスワードを送信する必要があります。そうしないと、Redis はクライアントから送信されたコマンドの実行を拒否します。たとえば、Windows クライアントを使用して接続します。 は保護モードをオンにし、

DENIED
というプロンプトを表示し始めました。 bind を使用して、信頼できる IP をバインドするか、保護モードを無効にします。最後に、確認のためにパスワードの入力を求められます。 <p><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/067/08d9eedbfc607ae01957946d8510e18f-5.png" class="lazy" alt=""></p> <p>示例:设置键sky,set “sky” “hello redis”</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">#设置skyset &quot;sky&quot; &quot;hello redis&quot;</pre><div class="contentsignin">ログイン後にコピー</div></div> <p>重启redis服务(需要读取到redis.conf文件),会提示验证密码,如下图所示。</p> <p><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/067/7821f9c6f024e60ce5971acfaa90efbd-6.png" class="lazy" alt=""></p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">#获取skyget sky(error) NOAUTH Authentication required.  #提示需要密码认证 #认证auth 123456 #再次获取skyget sky&quot;hello redis&quot;</pre><div class="contentsignin">ログイン後にコピー</div></div> <p>虽然数据库设置密码很方便,但是在复杂的场景中经常需要使用更加细粒度的访问权限控制。比如:</p> <ul> <li>生产环境中的应用程序下不应该具有执行CONFIG、FLUSHALL涉及到管理或者数据安全的命令权限</li> <li>多个程序因不同用途共用一个Redis服务时,建议限制某个程序访问其它程序产生的键。</li> </ul> <p>tips:为此,Redis6.0推出了访问控制列表(ACL)功能,可以支持多用户,并且设置每个用户可以使用的命令和访问的键名规则等。可以通过配置文件设置,如下:</p> <ul> <li>将ACL配置直接写在Redis配置文件中</li> <li>将ACL配置写在单独的文件中,然后在Redis配置文件通过<code>aclfile指令引入,例如:

aclifile /opt/person/conf.acl
ログイン後にコピー

2.1、Redis主从复制注意事项

在配置Redis复制的时候,如果主库设置了密码,需要在从库的配置文件中通过masterauth <master-password>参数设置主库的密码,使从库连接主库时自动使用auth命令验证,配置如下。

masterauth <master-password>
ログイン後にコピー

3、命名命令

Redis支持在配置文件中将命令重命名,例如将FLUSHALL命令重命名为一个比较复杂的名字,达到保证只有自己的应用可以使用该命令。当然,这个功能可以看做在6.0版本之前没有ACL,作为对命令安全性的一个补充。如下配置:

rename-command FLUSHALL redisabcdsky1r2d3is
ログイン後にコピー

如果希望直接一点,直接禁用,通过重命名为空字符

rename-command FLUSHALL ""
ログイン後にコピー

再次强调:安全起见,无论设置密码还是重命名命令,都应遵循保证配置文件的安全性,否则就无意义了。

二、通信协议

之前有了解到Redis的主从复制以及持久化AOF文件的格式,通过了解Redis通信协议能更好的理解Redis。

当然Redis支持两种通信协议。如下:

  • 一种是二进制安全的统一请求协议(unified request protocol)
  • 第二种是比较直观的便于在telnet程序中输入的简单协议

1、简单协议

简单协议适合在telnet程序中和Redis通信。如下是通过telnet测试与Redis通信:

linux下Redhat系列安装telnet通过yum命令

yum -y install telnet
ログイン後にコピー

Windows在启用或关闭Windows功能中启用telnet

[root@dywangk redis-6.0.8]# telnet 127.0.0.1 6379Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.auth 123456 #同样需要验证密码,之前设置了密码+OKset foo bar 
+OK
get foo$3bar#输入quit退出telnet
ログイン後にコピー

1.1、错误回复

错误回复(error reply)以 - 开头并在后面跟着错误信息:

-ERR unknown command ``, with args beginning with:
ログイン後にコピー

1.2、状态回复

状态回复(status reply)以+开头

+OK
ログイン後にコピー

1.3、整数回复

整数回复(integer reply)以:开头

:3
ログイン後にコピー

1.4、字符串回复

字符串(bulk reply)回复以$开头

$3
ログイン後にコピー

2、统一请求协议

统一请求协议是从Redis1.2开始加入的,其命令格式与多行字符串回复格式类似。也以telnet为例演示:

[root@dywangk redis-6.0.8]# telnet 127.0.0.1 6379Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.auth 123456 #同样需要验证密码,之前设置了密码+OK
*3$3set$3foo$3bar  
+OK#输入quit退出telnet
ログイン後にコピー

同样,在发送命令的时候指定了后面字符串的长度,所以每个命令的每个参数都可以包含二进制的字符。

Redis的AOF文件和主从复制时数据库发送的内容使用了统一请求协议。如果简单的使用telnet与Redis进行通信,使用简单协议即可。

三、管理工具

1、redis-cli

看到redis-cli大家肯定不陌生,是的我们学习测试快速融入都是使用的redis-cli命令进行的,Redis自带的客户端。Redis可以执行大部分的Redis命令,包括查看数据库信息的info命令、更改数据库设置的config命令和强制进行RDB快照的save命令。简单介绍几个管理Redis常用的命令。

1.1、耗时命令日志

当一条命令执行时间超过限制时,Redis会将该命令的执行时间等信息加入耗时命令日志(slow log)以供开发者查看。通过配置文件的slowlog-log-slower-than 10000参数设置限制,注意单位是微秒,可以看到默认为10000。通过slowlog-max-len 128限制记录的条数。

获取当前耗时命令日志

slowlog get
ログイン後にコピー

每条日志由以下4个部分组成

  • 唯一日志ID
  • 执行的Unix时间
  • 耗时时间,单位为微秒
  • 命令及其参数

测试时,将slowlog-log-slower-than 0 参数设置为0

slowlog-log-slower-than 0
ログイン後にコピー

1.2、命令监控

Redis提供了monitor来监控Redis执行的所有命令,redis-cli也支持。例如:

monitor
ログイン後にコピー

注意:一般用于调试和纠错使用。

2、Medis

获取地址:https://getmedis.com/

当Redis中的键比较多时,此时使用redis-cli管理略显不足。Medis是一款macOS下的可视化Redis管理工具。通过界面即可实现管理Redis。

3、phpRedisAdmin

看到phpRedisAdmin,大家也许会联想到以网页形式管理MySQL的phpMyAdmin管理工具。

下载地址:https://github.com/erikdubbelboer/phpRedisAdmin

关于工具的使用,可以参考github说明,这里不做过多介绍。

建议:github那访问速度大家都懂的,建议导入到gitee作为镜像仓库使用,每隔一段时间同步。

4、Rdbtools

一款采用Python语言开发的Redis的快照文件解析器,它可以根据快照文件导出json数据文件、分析Redis中每个键的占用空间情况。

下载地址:https://github.com/sripathikrishnan/redis-rdb-tools

关于工具的使用,可以参考github说明,这里不做过多介绍。

5、命令参考

最后介绍一个Redis命令大全参考网站,源自于Redis官网,链接如下:

https://redis.io/commands

推荐学习:Redis学习教程

以上が30 分で Redis の管理方法を学びますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Redisクラスターモードの構築方法 Redisクラスターモードの構築方法 Apr 10, 2025 pm 10:15 PM

Redisクラスターモードは、シャードを介してRedisインスタンスを複数のサーバーに展開し、スケーラビリティと可用性を向上させます。構造の手順は次のとおりです。異なるポートで奇妙なRedisインスタンスを作成します。 3つのセンチネルインスタンスを作成し、Redisインスタンスを監視し、フェールオーバーを監視します。 Sentinel構成ファイルを構成し、Redisインスタンス情報とフェールオーバー設定の監視を追加します。 Redisインスタンス構成ファイルを構成し、クラスターモードを有効にし、クラスター情報ファイルパスを指定します。各Redisインスタンスの情報を含むnodes.confファイルを作成します。クラスターを起動し、CREATEコマンドを実行してクラスターを作成し、レプリカの数を指定します。クラスターにログインしてクラスター情報コマンドを実行して、クラスターステータスを確認します。作る

Redisコマンドの使用方法 Redisコマンドの使用方法 Apr 10, 2025 pm 08:45 PM

Redis指令を使用するには、次の手順が必要です。Redisクライアントを開きます。コマンド(動詞キー値)を入力します。必要なパラメーターを提供します(指示ごとに異なります)。 Enterを押してコマンドを実行します。 Redisは、操作の結果を示す応答を返します(通常はOKまたは-ERR)。

Redisデータをクリアする方法 Redisデータをクリアする方法 Apr 10, 2025 pm 10:06 PM

Redisデータをクリアする方法:Flushallコマンドを使用して、すべての重要な値をクリアします。 FlushDBコマンドを使用して、現在選択されているデータベースのキー値をクリアします。 [選択]を使用してデータベースを切り替え、FlushDBを使用して複数のデータベースをクリアします。 DELコマンドを使用して、特定のキーを削除します。 Redis-CLIツールを使用してデータをクリアします。

単一のスレッドレディスの使用方法 単一のスレッドレディスの使用方法 Apr 10, 2025 pm 07:12 PM

Redisは、単一のスレッドアーキテクチャを使用して、高性能、シンプルさ、一貫性を提供します。 I/Oマルチプレックス、イベントループ、ノンブロッキングI/O、共有メモリを使用して同時性を向上させますが、並行性の制限、単一の障害、および書き込み集約型のワークロードには適していません。

Redisのソースコードを読み取る方法 Redisのソースコードを読み取る方法 Apr 10, 2025 pm 08:27 PM

Redisソースコードを理解する最良の方法は、段階的に進むことです。Redisの基本に精通してください。開始点として特定のモジュールまたは機能を選択します。モジュールまたは機能のエントリポイントから始めて、行ごとにコードを表示します。関数コールチェーンを介してコードを表示します。 Redisが使用する基礎となるデータ構造に精通してください。 Redisが使用するアルゴリズムを特定します。

Redisのすべてのキーを表示する方法 Redisのすべてのキーを表示する方法 Apr 10, 2025 pm 07:15 PM

Redisのすべてのキーを表示するには、3つの方法があります。キーコマンドを使用して、指定されたパターンに一致するすべてのキーを返します。スキャンコマンドを使用してキーを繰り返し、キーのセットを返します。情報コマンドを使用して、キーの総数を取得します。

基礎となるRedisを実装する方法 基礎となるRedisを実装する方法 Apr 10, 2025 pm 07:21 PM

Redisはハッシュテーブルを使用してデータを保存し、文字列、リスト、ハッシュテーブル、コレクション、注文コレクションなどのデータ構造をサポートします。 Redisは、スナップショット(RDB)を介してデータを維持し、書き込み専用(AOF)メカニズムを追加します。 Redisは、マスタースレーブレプリケーションを使用して、データの可用性を向上させます。 Redisは、シングルスレッドイベントループを使用して接続とコマンドを処理して、データの原子性と一貫性を確保します。 Redisは、キーの有効期限を設定し、怠zyな削除メカニズムを使用して有効期限キーを削除します。

Redisキューの読み方 Redisキューの読み方 Apr 10, 2025 pm 10:12 PM

Redisのキューを読むには、キュー名を取得し、LPOPコマンドを使用して要素を読み、空のキューを処理する必要があります。特定の手順は次のとおりです。キュー名を取得します:「キュー:キュー」などの「キュー:」のプレフィックスで名前を付けます。 LPOPコマンドを使用します。キューのヘッドから要素を排出し、LPOP Queue:My-Queueなどの値を返します。空のキューの処理:キューが空の場合、LPOPはnilを返し、要素を読む前にキューが存在するかどうかを確認できます。

See all articles