Redisの使い方

silencement
silencementオリジナル
2019-06-04 15:49:022431ブラウズ

この記事ではredisの基本的な使い方を紹介します。

Redisの使い方

#1. Redis 基本部分:

#redis が適用される場面


1. 最新 N データを取得する操作


2. ランキング アプリケーション、上位 N を取得する操作

3. 有効期限は次のとおりです。正確に設定する アプリケーション

4. カウンターアプリケーション

5. ユニークな操作、一定期間のすべてのデータ重複排除値を取得する

6. リアルタイムシステム、スパム対策システム

7.リアルタイム メッセージング システムを構築するための Pub/Sub

##8.キュー システムを構築する

9.キャッシュ


SET 操作は 1 秒あたり 110,000 回、GET 操作は 1 秒あたり 81,000 回で、サーバー構成は次のとおりです:


Linux 2.6、Xeon X3320 2.5Ghz.

stackoverflow Web サイトは Redis をキャッシュ サーバーとして使用します。


データはハードディスクにも書き込まれます。したがって、データは安全です (突然の停電を除き、サービスの再起動は dump.rdb ファイルに書き込まれます)


1) インストール:

tar zxvf redis-2.6.9.tar.gz
cd redis-2.6.9
make
cd src && make install
2) 構成ファイルの場所を移動します (管理を容易にするため)

cd /usr/local/
mkdir -p /usr/local/redis/bin
mkdir -p /usr/local/redis/etc
mv /lamp/redis-2.6.9/redis.conf /usr/local/redis/etc
cd /lamp/redis-2.6.9/src
mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server /usr/local/redis/bin
3) 構成ファイルを変更します

#
vi /usr/local/redis/etc/redis.conf

daemonize no の no を yes に変更します [yes はバックグラウンドで実行することを指します]
4) 開始/ランダム開始:

cd /usr/local/redis/bin
./redis-server /usr/local/redis/etc/redis.conf#启动redis并指定配置文件。
#vi /etc/rc.local #设置随机启动。
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf

5) 起動が成功したかどうかを確認します

ps -ef | grep redis
netstat -tunpl | grep 6379#查看端口是否占用。

6) クライアントに入る/終了します

cd /usr/local/redis/bin
./redis-cli#进入
quit#退出

7) redis を閉じる


pkill redis-server#关闭
./redis-cli shutdown#关闭

Redis のセキュリティ

Redis のセキュリティ???(次の 4 つの方法による)
1. ACL コントローラーのセキュリティを使用する。


2. 次の設定行を redis.conf 設定ファイルに追加して、redis を単一のインターフェイスにバインドします (ただし、このネットワーク カードからのデータを受け入れるだけではありません)。


bind 127.0.0.1


3. より長いパスワードを redis に追加します (覚えておく必要はありません)


4. redis では、 .conf 設定により認証機能が有効になります。


5.SSL プロキシ


6.指定されたコマンドを無効にします。


Redis 構成


daemonize バックグラウンドで実行する必要がある場合は、この項目を [はい] に変更します

pidfile /var/run/redis.pid


bind バインディング IP でデフォルトで複数の PID アドレスを構成します。設定後は、この IP からのリクエストのみを受け入れます


port listen ポート、デフォルトは 6379 です。


timeout クライアント接続時のタイムアウトを秒単位で設定します。


loglevel debug、verbose、notice の 4 つのレベルに分かれています。 、警告


logfile ログ ファイルのアドレスを構成します


databases データベースの数を設定します。デフォルトのデータベースは 0


save redis の頻度を設定します。データベースミラーリングの

#rdbcompression ミラーバックアップ実行時に圧縮を行うかどうか

Dbfilename ミラーバックアップファイルのファイル名

Dir Database Fileミラー バックアップの配置パス

Slaveof データベースを他のデータベースのスレーブ データベースとして設定します

Masterauth マスター データベース接続にはパスワードの検証が必要です

Requirepass ログインに必要なパスワードを設定します

Maxclients 同時に接続するクライアントの数を制限します

Maxmemory Redis が使用できる最大メモリを設定します

Appendonly 追加専用モードをオンにします。


次の内容を理解できます。


Appendfsync の同期頻度を設定します。 appendonly.aof ファイル


vm-enabled 仮想メモリのサポートを有効にするかどうか

vm-swap-file 仮想メモリのスワップ ファイル パスを設定します

vm-max-memory redis が使用するパスを設定します 物理メモリの最大サイズを設定します

vm-page-size 仮想メモリのページ サイズを設定します

vm-pagesスワップ ファイルの合計ページ番号


vm-max -threads VM IO が同時に使用するスレッドの数を設定します

Glueoutputbuf 小さな出力バッファをまとめて保存します

hash -max-zipmap-entries ハッシュ

Activerehashing Rehash

5 データ型の重要な値を設定します: 文字列、ハッシュ、リンク リスト、セット、順序付きセット。

サポート: プッシュ/ポップ、追加/削除、交差、結合、差分、並べ替え。

redis9d37de08b4a8a366097a81bb1af3480emysql

同時に、データもハードディスクに書き込まれます。したがって、データは安全です (突然の停電を除き、サービスの再起動は dump.rdb ファイルに書き込まれます)

select num#ライブラリを選択します。デフォルトは 0 ライブラリ、合計 16 ライブラリです。

auth liweijie#承認されたユーザーに必要なパスワード (パスワードは redis.conf で設定されたパスワードです)

flushdb#データベースをクリアします。

String (文字列) 型:

set name lijie#キー name の値を lijie に設定します

get name#name の値を取得します。

keys *#すべてのキーをクエリします。

setnx name liweijie#キーがすでに存在する場合は、上書きを防ぐために 0 を返し、更新されません。

setex ヘアカラー 10 赤 #設定されたキー値の有効期間は 10 秒です。

setrange email 6 Lampbre.com#lambre.com への置換キーの値を 6 文字目から変更します

mset name1 Li Dawei name2 Li Xiaowei#複数の値を設定しますキー。

msetnxname1 Zhang San name3 Li Si# キーが存在するかどうかを確認します。存在しない場合は設定します。存在しない場合は設定されず、0

が返されます。

mget name1 name2 name3#複数のキーの値を一度に取得します。

getset name1 Tom#キーの値をリセットし、古いキーの値を返します。

getrange email 6 18#6 番目から 18 番目までの文字から電子メール キーの値を取得します。

incr uid#は毎回 1 ずつ増加します (キー内の uid が存在しない場合は、それを設定して 0 から開始します。以下同様)

incrby uid 5#は毎回 5 ずつ増加しますtime

incrby uid -5#毎回 5 ずつ減少します

decr uid #毎回 1 ずつ減少します

decrby uid 5#毎回 5 ずつ減少します

appendname1 @ 126.com#name1 の値に文字列 @126.com を追加します

##strlenname1#キー name1 の値の長さを返します。

ハッシュ (ハッシュ) タイプ:

hset user:001 name liweijie#Hash は、ユーザー user:001 の名前キー値を liweijie


hset user に設定します。 001 age 21#同様に、年齢キー値 21 を追加します


hsetnx user:001 age 22#上記と同じですが、キーが存在するかどうかを確認します。存在しない場合は作成します。


hmset user:002 name liweijie2 age 26 sex 1#複数のキーの値を同時に設定します。


hget user:001 name#Hash は、ユーザー user:001 の name キーの値を取得します。


hget user:001 age #上記と同じ。


hmget user:001 name age sex#指定された複数のキーの値を取得します。


hgetall user:001#すべてのキーの値を取得します。


hincrbyuser:001 age -8#指定された値を指定されたキーに追加します。


hexists user:001 sex#指定されたキー値が存在するかどうかを確認します。


hlen user:001#指定されたハッシュのキー/フィールドの数を返します。


hdel user:001 sex#指定された (user:001) ハッシュの指定されたフィールドまたはキー値を削除します。


hkeys user:003#ハッシュ内のすべてのフィールドまたはキー値を返します。

リスト (リンク リスト) の種類と操作 (スタックまたはキュー):

lpush mylist "world"#先頭から文字列を挿入


lpush mylist "hello "#ibid


lrange mylist 0 -1#[1) "hello" 2) "world" のように 0 から最後のものまでを取得]


rpush mylist "jiejie "#最後に挿入


linsert mylist before "hello" "this is linsert" #挿入位置を指定します(helloの前に挿入)。


lset mylist 0 "what"#指定された添字の値を設定および変更します。


lrem mylist 1 "hello"#値 hello を持つ要素を (1) 削除します。 (n
ltrim mylist 1 2 #添字 1/2 の要素をテーブルに保持します。


lpop mylist# 先頭要素をポップしてリターンします。

rpop mylist# 末尾要素をポップしてリターンします。

rpoplpush mylist mylist2 #mylist の末尾からポップし、mylist2 の先頭に挿入します。

lindex mylist 0#テーブルインデックス 0 の要素値を取得します。

llen mylist#テーブル要素の数を返します (count($arr ) と同等)。

sets (セット) の種類と操作 (友達の推薦、ブログ、タグ機能):


smembers myset#myset セット内のすべての要素の値を表示します。

sadd myset "hello"#値 hello を mysets コレクションに追加します

srem myset "hello"#myset コレクション内の hello という名前の要素を削除します。

spop myset #ランダムにポップアップし、mysets 内の要素を返します。

sdiff myset2 myset3#myset2 と myset3 の差を返します (myset2 に依存します)。

sdiffstore myset4 myset2 myset3#myset2 と myset3 の差を返し、myset4 に保存します。

sinter myset2 myset3#myset2 と myset3 の共通部分を返します。

sinterstore myset5 myset2 myset3#myset2 と myset3 の共通部分を返し、myset5 に格納します。

sunion myset2 myset3#ユニオンを見つけます (重複を削除)

sunionstore myset6 myset2 myset3#ユニオンを見つけて、myset6 に保存します。

smove myset2 myset3 "three"#myset2 の 3 つを myset3 に移動します。

scard myset2#要素の数を返します。

sismember myset2 "one"#要素 1 が myset2 セット内にあるかどうかを判断します (is_array() と同等)。

srandmember myset2# myset2 コレクション内の要素をランダムに返しますが、削除しません (array_rand() と同等)。

ソートセット (順序付きセット) のタイプと操作 (スコアによってソート):

zadd myzset 1 "one"#要素 1 をシーケンス 1 に追加します

zadd myzset 2 " two"# 上記と同じ。

zadd myzset 3 "two"#更新順序 2 の値と同等

zrange myzset 0 -1 withscores#すべての要素を並べ替えて表示します (デフォルトは昇順)。

zrem myzset "two"#two を削除

zincrby myzset 2 "two"#two のシーケンス値に 2 を追加

zrank myzset "two"#元に戻るset 要素のインデックス添え字の値。

zrevrank myzset two#要素を反転し、新しい添字値を返します。

zrevrange myzset 0 -1 withscores#順序を逆にします (降順と同等)

zrangebyscore myzset 1 10 withscores#要素を 1 ~ 10 の順序で返します (ページ分割可能)。

zcount myzset 1 10 #要素の数を 1 ~ 10 の順序で返します。

zcard myzset#セット内のすべての要素の数を返します。

zremrangebyrank myzset 1 2#セット内の添え字 1 ~ 2 を持つ要素を削除します。

zremrangebyscore myzset 1 10#セット内の 1 から 10 までの要素を削除します。

一般的な Redis コマンド

キー/値関連のコマンド。

keys * #すべての

keys をクエリ user*#指定された

exists user:001# をクエリして、存在するかどうかを確認します。

del name#指定されたキーを削除します。

expire addr 10#设置过期时间

ttl addr#查询过期时间

select 0 #选择数据库

move age 1#将age移到1数据库。

get age #获取

persist age#移除age的过期时间。

randomkey#随机返回一个key

rename name1 name2#重命名键

type myset#返回键的类型。

ping #测试redis连接是否存活。

echo lamp#输出一个lamp

select 10#选择数据库。

quit/exit/crtl+C#退出客户端

dbsize#返回库里的键的个数。

服务器相关命令:

info#显示redis服务器的相关信息。

config get */loglevel #返回所有/指定的配置信息。

flushdb#删除当前库中的所有键/表。

flushall#删除所有数据库中的所有键/表

二、Redis高级部分: 

1、Redis安全性:  

1.用ACL控制器安全性。

2.给redis加上较长密码 

# requirepass foobared 

requirepass beijing 

3.在redis.conf配置启用认证功能。

方式一:Auth beijing

方式二:./redis-cli -a beijing

4.在redis.conf配置文件增加下面这一行配置,即可把redis绑定在单个接口上(但并不是只有接受这个网卡的数据)。

bind 127.0.0.1(单台机器的时候可以配置,分布式或主从复制时最好不要配置)

5.SSL代理

6.禁用指定命令。

2、Redis主从复制:  

redis只需在从服务器(slave)上配置即可:

slaveof 211.122.11.11 6379 #指定master 的ip 和端口 

masterauth beijing#这是master主机的密码 

Info#查看主/从服务器的状态。

3、Redis事务处理:  

Redis事务很不完善。

4、Redis持久化机制:  

方式一、备份数据到磁盘(快照)[ snapshotting(快照)也是默认方式]

记录操作命令[ Append-only file(缩写aof)的方式]

备份数据到磁盘(快照)[ snapshotting(快照)也是默认方式] 

save 900 1 #900秒内如果超过1个key被修改,则发起快照保存
save 300 10 #300秒内容如超过10个key被修改,则发起快照保存
save 60 10000

方式二、记录操作命令[ Append-only file(缩写aof)的方式](较安全持久化) 

appendonly yes #启用aof 持久化方式 
# appendfsync always //收到写命令就立即写入磁盘,最慢,但是保证完全的持久化 
appendfsync everysec //每秒钟写入磁盘一次,在性能和持久化方面做了很好的折中

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

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