1. Redisの導入とインストール
1.1 Redis の概要
Redis (Remote Dictionary Server)、つまりリモート辞書サービスは、ANSI C 言語で書かれたオープンソースで、ネットワークをサポートし、メモリベースまたは永続的なログタイプ、Key-Value データベースをサポートし、複数の言語で API を提供します。2010 年 3 月 15 日以降、Redis の開発は VMware によってホストされ、2013 年 5 月以降、Redis の開発は Pivotal によって後援されています。
Redis では何ができるのでしょうか?
- メモリストレージ、永続性は電源を切ると失われるため、永続性は非常に重要です。Redis は 2 つのメカニズム (RDB と AOF) を使用します。
- 高効率、高速効率に使用可能
- パブリッシュ・サブスクライブ・システム
- 地図情報解析
- カウンターなど、Web サイトのビュー
Redisの機能/特徴
- さまざまなデータ型
- 持久化
- 集まる
- 事務など
1.2 CentOS7にRedisをインストールする
1.2.1 gccのインストール
Linux の gcc は、GNU によって開発された優れたパフォーマンスを備えた強力なマルチプラットフォーム コンパイラーです。gcc コンパイラは、C および C++ 言語のソース プログラムとオブジェクト プログラムをコンパイルし、実行可能ファイルにリンクできます。Linux の gcc は、GNU によって開発された優れたパフォーマンスを備えた強力なマルチプラットフォーム コンパイラーです。gcc コンパイラは、C および C++ 言語のソース プログラムとオブジェクト プログラムをコンパイルし、実行可能ファイルにリンクできます。Linuxのgccは、 GNUによって起動された優れたパフォーマンスを備えた強力なマルチプラットフォーム コンパイラです。g ccコンパイラはC 、Cを変換できます。++言語ソースプログラムとターゲットプログラムはコンパイルされ、実行可能ファイルにリンクされます。
Redis は C++ 環境に依存するため、C++ をインストールする必要があります
yum install gcc-c++
gcc -v でバージョンを確認できます
gcc -v
redis7.* では 4 を個別に実行するために上位バージョンの gcc のサポートが必要なため、バージョンをアップグレードします。
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils #修改使用版本
scl enable devtoolset-9 bash
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
引き続き gcc バージョンの 9.* へのアップグレードを確認して、インストールを完了します。
1.2.2 Redis をダウンロードしてインストールする
redis は Windows と Linux にインストールして使用できますが、Windows システムのバージョンは長い間停止されているため、使用することはお勧めできません。
公式サイト https://redis.io/ 中国語サイト http://www.redis.cn/
ツールを使用して、インストール ファイルを opt フォルダーの下に置きます。
注: システム アプリケーションが Java の場合は /usr/local にインストールし、ユーザーレベルのアプリケーションの場合は opt の下に置きます。
フォルダーを解凍します。
tar -zxvf redis-7.0.5 .tar.gz
解凍後、redis フォルダーに入ってファイルを表示します。
[root@lixp ~]# cd redis-7.0.5
[root@lixp redis-7.0.5]# ls
コンパイル: 必要な構成を構成するのに役立ちます
make #注意需要在解压后的redis文件夹中执行
这一步就是编译,大多数的源代码包都经过这一步进行编译(当然有些perl或python编写的软件需要 调用perl或python来进行编译)。如果 在 make 过程中出现 error ,就要记下错误代码(注意不仅仅 是最后一行),然后可以向开发者提交 bugreport(一般在 INSTALL 里有提交地址)。或者系统少了 一些依赖库等,这些需要自己仔细研究错误代码。make 的作用是开始进行源代码编译,以及一些功能 的提供,这些功能由他的 Makefile 设置文件提供相关的功能。比如 make install 一般表示进行安装, make uninstall 是卸载,不加参数就是默认的进行源代码编译。make 是 Linux 开发套件里面自动化 编译的一个控制程序,他通过借助 Makefile 里面编写的编译规范进行自动化的调用 gcc 、ld 以及运行 某些需要的程序进行编译的程序。
Redisをインストールする
make install
このコマンドはインストールに使用されます (もちろん、一部のソフトウェアでは最初にいくつかのテストのために make check または make test を実行する必要があります)。この手順では通常、root 権限が必要です (システムにファイルを書き込む必要があるため)。
コマンド拡張 - ソフトウェアのインストールプロセス
1、解zhi包软件 tar zxf xxxx.tgz
2、配置 cd xxxx ./configure
3、编译 make
4、安装 make install
5、卸载 make uninstall
Redis環境サービスがどこにあるか確認する
テストを開始する
redis-server
redis-server redis-config #后面是配置文件路径
1.2.3 Redis を構成する
vimエディタをインストールする
yum -y install vim
バックアップファイル
redis 設定ファイルと同じ階層にフォルダーを作成し、そのフォルダーに redis.conf ファイルを cp します。この cp ファイルは今後の運用に使用します。元のオリジナルは変更されません。
#进入到redis目录下
[root@lixp redis-7.0.5]# cd /opt/redis-7.0.5
#复制一份redis.conf文件,防止源文件损坏,备份。
[root@lixp redis-7.0.5]# cp redis.conf ./redis0.conf
[root@lixp redis-7.0.5]# ll
バックグラウンド起動を変更する
vim redis-conf
redisを再起動してテストを確認します
[root@lixp redis-7.0.5]# redis-server /opt/redis-6.0.6/it-sunwz/redis.conf
進行状況を表示する
ps -aux | grep redis
ps -ef | grep redis
クライアント接続テスト
[root@lixp redis-7.0.5]# redis-cli -h 127.0.0.1 -p 6379
[root@lixp redis-7.0.5]# redis-cli -h 127.0.0.1 -p 6379 --raw #支持中文显示
クライアントIOテスト
set name 张三
get name
keys *
クライアントを終了してサービスを終了する
# 退出客户端
exit
# 结束服务方式1 客户端内直接输入
shutdown shutdown
# 结束服务方式2 客户端外直接输入命令
redis-cli shutdown
ファイアウォールコマンドの拡張
启动防火墙:systemctl start firewalld
关闭防火墙:systemctl stop firewalld
检查防火墙状态:systemctl status firewalld
设置开机启用防火墙:systemctl enable firewalld.service
设置开机禁用防火墙:systemctl disable firewalld.service ·
关闭防火墙:systemctl stop firewalld
设置开机禁用防火墙:systemctl disable firewalld.service
1.2.4 Redis スイッチ
最初のタイプ: クライアントの終了後
[root@lixp redis-7.0.5]# redis-cli shutdown
2 番目: クライアント内で直接 (推奨)
127.0.0.1:6379>shutdown
1.3 Redis可視化ツールのインストール
Redis Desktop Manager (Redis 視覚化ツール) のインストールと使用
デフォルトでは接続できません
ポートを開くようにファイアウォールを構成する
firewall-cmd --add-port=6379/tcp --permanent
firewall-cmd --remove-port=8888/tcp --permanent
firewall-cmd --list-ports
Redis サービスにはデフォルトで保護メカニズムがあり、デフォルトのメカニズム ルールでは、現在 Redis サービスがインストールされているコンピューターのみが 127.0.0.1 へのアクセスを許可されます。
デフォルトでは、redis の構成ファイルでは IP アドレスが 127.0.0.1 にバインドされていますが、リモート アクセスをサポートするには、このアドレスをコメント アウトする必要があります。
Redis サービスを再起動します
1.4 Redis を始める
1.4.1 Redisスレッドの問題について
Redis はシングルスレッドですが、なぜシングルスレッドがこれほど高速なのでしょうか?
Redisのデータ構造は単純なKey-Valueだけではなく、リストやハッシュなどの複雑な構造もあります。これらの構造は、長いリストの末尾への要素の追加、ハッシュ内のオブジェクトの追加または削除など、非常にきめの細かい操作を実行できます。これらの操作には大量のロックが必要となる場合があり、その結果、同期オーバーヘッドが大幅に増加します。つまり、シングルスレッドの場合、コードはより明確で、処理ロジックはより単純で、さまざまなロックを考慮する必要がなく、ロックの解放操作がなく、デッドロックの可能性によるパフォーマンスの消費がなく、プロセスやマルチスレッドによる切り替えは CPU を消費します。シングルスレッド マルチプロセス クラスター ソリューション シングル スレッドの能力は実際に非常に強力であり、コアあたりの効率も非常に高くなります。マルチスレッドにはシングル スレッドよりも高いパフォーマンス制限が当然ありますが、今日のコンピューティング環境では、単一マシンのマルチスレッドの上限ですらニーズを満たすことができないことがよくあります。サーバー クラスタリング 計画内のマルチスレッド テクノロジはまだ利用できません。したがって、シングルスレッド、マルチプロセスのクラスターは流行のソリューションです。CPU の消費はシングルスレッドであるため、不必要なコンテキストの切り替えや競合状態が回避され、マルチプロセスやマルチスレッドによって発生する切り替えによって CPU が消費されることはありません。しかし、CPU が Redis のボトルネックになった場合、またはサーバーの他の CPU コアをアイドル状態にしたくない場合はどうすればよいでしょうか? いくつかの Redis プロセスが考えられますが、Redis はリレーショナル データベースではなくキーと値のデータベースであり、データ間に制約はありません。どのキーがどの Redis プロセスに配置されているかをクライアントが区別できる限り。
1.4.3 redisの基本コマンド
データベース切り替え操作
127.0.0.1:6379> PING #检查连接
PONG
127.0.0.1:6379> SELECT 15
OK
127.0.0.1:6379[15]> SELECT 16 #一共16个库 0-15
(error) ERR DB index is out of range
127.0.0.1:6379[15]> SELECT 0 #默认是0 不显示索引
OK
127.0.0.1:6379>
現在のデータベースを表示する
127.0.0.1:6379> SET student zhangsan #增加一个数据
OK
127.0.0.1:6379> SET student lisi #相同key增加一个数据 会覆盖掉
OK
127.0.0.1:6379> GET student # 取值
"lisi"
127.0.0.1:6379> KEYS * # 查看所有的key
1) "list11"
2) "student"
3) "user:1:age"
4) "user:1:name"
127.0.0.1:6379>
データベース内のデータをクリアする
lushdb は現在のデータベースを削除します。前提条件は現在のデータベースに入る必要があります。
flashall はすべてのライブラリを削除します
127.0.0.1:6379> SET student zhangsan #在索引0库加信息
OK
127.0.0.1:6379> SET teacher lisi #在索引0库加信息
OK
127.0.0.1:6379> select 5 #切换索引为5的库
OK
127.0.0.1:6379[5]> SET user wangwu #在索引5库加信息
OK
127.0.0.1:6379[5]> KEYS *
1) "user"
127.0.0.1:6379[5]> FLUSHDB #清除当前库
OK
127.0.0.1:6379[5]> keys *
(empty array)
127.0.0.1:6379[5]> SELECT 0
OK
127.0.0.1:6379> KEYS *
4.2.4 设置过期时间
4.2.5 查看key类型
4.2.5 查看key是否存在
5. redis数据类型
redis存在5种基本数据类型和三种特殊类型
1) "teacher"
2) "student"
127.0.0.1:6379> SELECT 5
OK
127.0.0.1:6379[5]> FLUSHALL #清空所有的库信息
OK
127.0.0.1:6379[5]> SELECT 0
OK
127.0.0.1:6379> KEYS *
(empty array)
127.0.0.1:6379>
有効期限を設定する
127.0.0.1:6379> set student jiazong
OK
127.0.0.1:6379> EXPIRE student 30 #设置过期 秒数
(integer) 1
127.0.0.1:6379> TTL student
(integer) 18
127.0.0.1:6379> TTL student
(integer) 16
127.0.0.1:6379> TTL student #查看过期时间
(integer) 14
127.0.0.1:6379> TTL student
(integer) 7
127.0.0.1:6379> TTL student
(integer) -2
127.0.0.1:6379> get student
(nil)
127.0.0.1:6379>
キーの種類を表示する
type key
キーが存在するかどうかを確認する
EXISTS key
(整数) 1
127.0.0.1:6379> TTL 学生
(整数) 18
127.0.0.1:6379> TTL 学生
(整数) 16
127.0.0.1:6379> TTL 学生 #查看过期間
(整数) 14
127.0.0.1:6379> TTL 学生
(整数) 7
127.0.0.1:6379> TTL 学生
(整数) -2
127.0.0.1:6379> 学生を取得
(nil)
127.0.0.1:6379>
查看key类型
```shell
type key
キーが存在するかどうかを確認する
EXISTS key