NotSQLのRedis(2)(Redisデータベース共通コマンドとマルチデータベース共通コマンド、Redisの高可用性と永続性)


1つは、Redisデータベースで一般的に使用されるコマンドです。

1.SETとGET

#set: 存放数据,命令格式为 set key value
#get: 获取数据,命令格式为get key

[root@localhost ~]# redis-cli -h 192.168.126.15 -p 6379
192.168.126.15:6379> set teacher wanger
OK
192.168.126.15:6379> get teacher
"wanger"

マーク

2.キー

#KEYS 命令可以取符合规则的键值列表,通常情况可以结合"*、?"等选项来使用
192.168.126.15:6379> set k1 1
OK
192.168.126.15:6379> set k2 2
OK
192.168.126.15:6379> set k3 3
OK
192.168.126.15:6379> set v1 4
OK
192.168.126.15:6379> set v5 5
OK
192.168.126.15:6379> set v22 5
OK


192.168.126.15:6379> KEYS *         #查看当前数据库中所有键

192.168.126.15:6379> KEYS v*        #查看当前数据库中以v开头的数据

192.168.126.15:6379> KEYS v?        #查看当前数据库中以v开头后面包含任意一位的数据

192.168.126.15:6379> KEYS v??       #查看当前数据库中以v开头v开头后面包含任意两位的数据

マーク
マーク

3.存在

#exists 命令可以判断键值是否存在

192.168.126.15:6379> exists teacher     #返回值为 1 表示存在
(integer) 1
192.168.126.15:6379> exists tea         #返回值为 0 表示不存在
(integer) 0


#del命令可以删除当前数据库的指定 key

192.168.126.15:6379> KEYS *

192.168.126.15:6379> del v5
(integer) 1
192.168.126.15:6379> get v5
(nil)
192.168.126.15:6379> type k1    #type 命令可以获取 key 对应的 value 值类型
string

マーク
マーク

4.名前の変更

# rename 命令是对已有key进行重命名(覆盖)

命令格式:rename 源key 目标key

#使用rename命令进行重命名时,无论目标key是否存在都进行重命名,且源key的值会覆盖目标key的值
#在实际使用过程中,建议先用 exists 命令查看目标 key 是否存在,然后再决定是否执行 rename 命令,以避免覆盖重要数据


192.168.126.15:6379> KEYS v*
1) "v1"
2) "v22"
192.168.126.15:6379> rename v22 v2
OK
192.168.126.15:6379> KEYS v*
1) "v2"
2) "v1"
192.168.126.15:6379> get v1
"4"
192.168.126.15:6379> get v2
"5"
192.168.126.15:6379> RENAME v1 v2
OK
192.168.126.15:6379> get v1
(nil)
192.168.126.15:6379> get v2
"4"

マーク

5.RENAMENX

# renamenx 命令的作用是对已有key进行重命名,并检测新名是否存在,如果目标key存在则不进行重命名(不覆盖)
命令格式: renamenx 源key 目标key

192.168.126.15:6379> KEYS *
1) "v2"
2) "k3"
3) "teacher"
4) "k1"
5) "k2"
192.168.126.15:6379> GET teacher
"wanger"
192.168.126.15:6379> GET v2
"4"
192.168.126.15:6379> RENAMENX v2 teacher
(integer) 0

192.168.126.15:6379> KEYS *

192.168.126.15:6379> GET teacher

192.168.126.15:6379> get v2

マーク

6.DBSIZE

#dbsize命令的作用是查看当前数据库中key的数目。
192.168.126.15:6379> DBSIZE
(integer) 5
192.168.126.15:6379> KEYS *

192.168.126.15:6379> CONFIG SET requirepass 123123      #设置密码为 123123
OK
192.168.126.15:6379> auth 123123                        #一旦设置密码,必须先验证通过密码,否则无法进行任何操作
OK
192.168.126.15:6379> CONFIG GET requirepass             #查看密码
1) "requirepass"
2) "123123"

マーク


2、Redisマルチデータベースで一般的に使用されるコマンド

  • Redisは複数のデータベースをサポートしています。Redisにはデフォルトで16個のデータベースが含まれています。データベース名には、0〜15の番号が順番に付けられます。
  • 複数のデータベースは互いに独立しており、互いに干渉しません

1.複数のデータベースを切り替えます

命令格式: select 序号
使用 redis-cli 连接Redis数据库后,默认使用的是序号为 0 的数据库
192.168.126.15:6379> SELECT 10          #切换至序号为10的数据库
OK
192.168.126.15:6379[10]> SELECT 15      #切换至序号为15的数据库
OK
192.168.126.15:6379[15]> KEYS *
(empty list or set)
192.168.126.15:6379[15]> SELECT 0       #切换至序号为0的数据库
OK
192.168.126.15:6379> KEYS *

マーク

2.複数のデータベース間でデータを移動します

格式: move 键值 序号


192.168.126.15:6379> set k1 100
OK
192.168.126.15:6379> get k1
"100"
192.168.126.15:6379> SELECT 1
OK
192.168.126.15:6379[1]> get k1
(nil)
192.168.126.15:6379[1]> SELECT 0        #切换至目标数据库0
OK
192.168.126.15:6379> get k1             #查看目标数据是否存在
"100"
192.168.126.15:6379> move k1 1          #将数据库0中k1移动到数据库1
(integer) 1
192.168.126.15:6379> SELECT 1           #切换至目标数据库1
OK
192.168.126.15:6379[1]> GET k1          #查看被移动数据
"100"
192.168.126.15:6379[1]> select 0
OK
192.168.126.15:6379> GET k1             #在数据库0中无法查看到k1的值
(nil)

マーク

3.データベースのデータをクリアします

FLUSHDB:清空当前数据库数据
FLUSHALL:清空所有数据库的数据,慎用!

3、Redisの高可用性

  • Webサーバーでは、高可用性とはサーバーが正常にアクセスできる時間を指し、測定基準はサーバーが通常のサービスを提供できる時間(99.9%、99.99%、99.999%など)です。
  • ただし、Redisのコンテキストでは、高可用性の意味はより広いように思われます。通常のサービス(マスタースレーブ分離、迅速なディザスタリカバリテクノロジーなど)の提供を保証することに加えて、データ容量の拡張も考慮する必要があります。データのセキュリティが失われることはありません。

Redisでは、高可用性を実現するためのテクノロジーには、主に永続性、マスタースレーブレプリケーション、センチネル、クラスターが含まれます。それらの機能と解決する問題について、以下で説明します。

1.持久化

  • 永続性は、最も単純な高可用性メソッドです(高可用性メソッドとして分類されない場合もあります)
  • 主な機能はデータのバックアップです。つまり、データはハードディスクに保存され、プロセスの終了によってデータが失われないようにします。

2.マスタースレーブレプリケーション

  • マスタースレーブレプリケーションは高可用性Redisの基盤であり、Sentinelとクラスターはすべてマスタースレーブレプリケーションに基づいており、高可用性を実現しています。
  • マスタースレーブレプリケーションは、主にデータのマルチマシンバックアップ、および読み取り操作と単純な障害回復のための負荷分散を実装します
  • 欠点は、障害回復を自動化できないこと、書き込み操作を負荷分散できないこと、およびストレージ容量が単一のマシンによって制限されることです。

3.セントリー

  • Sentinelは、マスタースレーブレプリケーションに基づいて、自動障害回復を実現します
  • 欠点は、書き込み操作を負荷分散できず、ストレージ容量が1台のマシンによって制限されることです。

4.クラスター

  • クラスタリングを通じて、Redisは、書き込み操作を負荷分散できず、ストレージ容量が単一のマシンによって制限されるという問題を解決します
  • 比較的完全な高可用性ソリューションが実現されました

第4に、Redisの永続性

1.永続機能

  • Redisはメモリデータベースであり、データはメモリに保存されます。サーバーの電源障害などによるRedisプロセスの異常終了後のデータの永続的な損失を回避するために、何らかの形式で定期的にRedisにデータを保存する必要があります(データまたはコマンド)メモリからハードドライブへ
  • 次回redisを再起動するときは、永続ファイルを使用してデータ復旧を実現します
  • さらに、災害バックアップの場合、永続ファイルをリモートの場所にコピーできます

2.Redisは永続性のための2つの方法を提供します

  • RDBの永続性:原則は、Reidsのデータベースレコードをメモリ内のディスクに定期的に保存することです
  • AOF永続性(ファイルのみを追加):原則は、MySQLのbinlogと同様に、Reidsの操作ログを追加された方法でファイルに書き込むことです。
  • AOFの永続性はリアルタイムのパフォーマンスが優れているため、つまり、プロセスが予期せず終了したときに失われるデータが少ないため、AOFが現在の主流の永続化方法ですが、RDBの永続性は依然としてその役割を果たしています。

おすすめ

転載: blog.csdn.net/weixin_51486343/article/details/114004877