Redisキャッシュ応用基礎
7706 ワード
Redisキャッシュ応用基礎
1、Redisの概要
Redisはkey-valueストレージシステムです.Memcachedと同様に、String(文字列)、List(チェーンテーブル)、Set(コレクション)、ZSet(秩序セット)、Hash(ハッシュタイプ)の格納されたvalueタイプが相対的に多くサポートされます.Memcachedと同様に、効率を確保するために、データはメモリにキャッシュされます.大きな違いは、Redisが定期的に更新されたデータをディスクに書き込むか、修正操作を追加の記録ファイルに書き込むか、それに基づいてmaster-slave同期を実現することです.
Redisは高性能なkey-valueデータベースです.現在、比較的優れたNoSQLデータベースです.単一スレッドは10 w+QPSをサポートする.
2、Redis取付(Mac OSX)
2)ローカルファイルをディレクトリに解凍する:/usr/local/redis-5.0.3
3)ソースプログラムをコンパイルし、redisディレクトリに入る
make
4)redisサービスを起動し、Redis/binディレクトリに入る
./redis-server ../redis.conf
➜ bin ./redis-server ../redis.conf
30578:C 18 Mar 2019 17:43:18.825 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
30578:C 18 Mar 2019 17:43:18.825 # Redis version=5.0.3, bits=64, commit=00000000, modified=0, pid=30578, just started
30578:C 18 Mar 2019 17:43:18.825 # Configuration loaded
30578:M 18 Mar 2019 17:43:18.826 * Increased maximum number of open files to 10032 (it was originally set to 256).
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 5.0.3 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 30578
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
30578:M 18 Mar 2019 17:43:18.827 # Server initialized
30578:M 18 Mar 2019 17:43:18.828 * DB loaded from disk: 0.000 seconds
30578:M 18 Mar 2019 17:43:18.828 * Ready to accept connections
5)redis-cli接続による使用
./redis-cli
-rwxrwxrwx 1 root staff 247K 2 13 16:48 redis-cli
-rwxrwxrwx 1 root staff 1.3M 2 13 16:48 redis-server
➜ bin ./redis-cli
127.0.0.1:6379> keys *
6)Redisのプロファイル
```
daemonize: , yes
pdifile: pid /var/run/redis.pid,
bind: redis IP , , ,
port: , 6379
timeout: ,
loglevel: 4 ,debug,revbose,notice warning。 notice
logfile: log , ,
database: , 0
save: redis
rdbcompression: ,
dbfilename:
dir:
slaveof:
masterauth: ,
requirepass:
maxclients:
maxmemory: redis
appendonly: appendonly ,redis appendonly.aof , redis ,
appendfsync: appendonly.aof
vm_enabled:
vm_swap_file:
vm_max_momery: ,redis , 0
vm_page_size:
vm_pages: page
vm_max_thrrads: vm IO
```
3、基本命令応用
1)String文字列127.0.0.1:6379> SET name Brace
OK
127.0.0.1:6379> get name
"Brace"
127.0.0.1:6379> setnx name Good
(integer) 0
127.0.0.1:6379>
重点的な説明SETNX
キーキーキーが存在しない場合にのみ、キーキーキーの値をvalueに設定します.キーキーキーが既に存在する場合、SETNXコマンドは何もしません.SETNXは『SET if Not eXists』(存在しなければSET)の略である.戻り値コマンドは、設定に成功した場合に1を返し、設定に失敗した場合に0を返します.
SETEX:通常のSETEXですが、keyの値を設定すると、有効期限が設定されます.キーキーの値をvalueに設定し、キーキーの生存時間をseconds秒に設定します.キーキーキーが既に存在する場合、SETEXコマンドは既存の値を上書きします.SETEXコマンドの効果は、次の2つのコマンドの効果と似ています.
SET key value EXPIRE key seconds#生存時間設定SETEXとこの2つのコマンドの違いは、SETEXが原子(atomic)操作であり、設定値と有効期限の設定の2つの操作を同じ時間で完了できるため、SETEXコマンドはキャッシュを格納する際に非常に実用的です.戻り値コマンドは、設定成功時にOKを返します.secondsパラメータが不正な場合、コマンドはエラーを返します.
2)HASHハッシュ表```
127.0.0.1:6379> hset hName nickname "zhangsan"
(integer) 1
127.0.0.1:6379> hget hName nickname
"zhangsan"
127.0.0.1:6379> hexists hName nickname
(integer) 1
127.0.0.1:6379> hexists hName uid
(integer) 0
127.0.0.1:6379> hlen hName
(integer) 1
127.0.0.1:6379> hincrby hName uid 3
(integer) 3
127.0.0.1:6379> hget hName uid
"3"
127.0.0.1:6379> hset hName age 20
(integer) 1
127.0.0.1:6379> hmset hName nickname "lisi" age 12
OK
127.0.0.1:6379> hmget hName nickname uid age
1) "lisi"
2) "3"
3) "12"
127.0.0.1:6379> hkeys hName
1) "nickname"
2) "uid"
3) "age"
127.0.0.1:6379> hvals hName
1) "lisi"
2) "3"
3) "12"
127.0.0.1:6379> hgetall hName
1) "nickname"
2) "lisi"
3) "uid"
4) "3"
5) "age"
6) "12"
127.0.0.1:6379>
```
127.0.0.1:6379> SET name Brace
OK
127.0.0.1:6379> get name
"Brace"
127.0.0.1:6379> setnx name Good
(integer) 0
127.0.0.1:6379>
```
127.0.0.1:6379> hset hName nickname "zhangsan"
(integer) 1
127.0.0.1:6379> hget hName nickname
"zhangsan"
127.0.0.1:6379> hexists hName nickname
(integer) 1
127.0.0.1:6379> hexists hName uid
(integer) 0
127.0.0.1:6379> hlen hName
(integer) 1
127.0.0.1:6379> hincrby hName uid 3
(integer) 3
127.0.0.1:6379> hget hName uid
"3"
127.0.0.1:6379> hset hName age 20
(integer) 1
127.0.0.1:6379> hmset hName nickname "lisi" age 12
OK
127.0.0.1:6379> hmget hName nickname uid age
1) "lisi"
2) "3"
3) "12"
127.0.0.1:6379> hkeys hName
1) "nickname"
2) "uid"
3) "age"
127.0.0.1:6379> hvals hName
1) "lisi"
2) "3"
3) "12"
127.0.0.1:6379> hgetall hName
1) "nickname"
2) "lisi"
3) "uid"
4) "3"
5) "age"
6) "12"
127.0.0.1:6379>
```
複数のkeyパラメータが与えられた場合、パラメータkeyの前後順に各リストを順次チェックし、最初の空でないリストの末尾要素をポップアップします.ブロック操作の詳細については、BLPOP key[key...]timeoutコマンドを参照してください.BRPOPは、ポップアップ要素の位置とBLPOP key[key...]timeoutが異なる以外は一致しています.
戻り値は、指定した時間内に要素がポップアップされていない場合、nilと待機時間を返します.逆に、2つの要素を含むリストを返します.1つ目の要素はポップアップされた要素が属するkeyで、2つ目の要素はポップアップされた要素の値です.
127.0.0.1:6379> LPUSH list 1 2 3 4 5
(integer) 5
127.0.0.1:6379> LPUSH list 6
(integer) 6
127.0.0.1:6379> lrange list 0 6
1) "6"
2) "5"
3) "4"
4) "3"
5) "2"
6) "1"
127.0.0.1:6379> lpop list
"6"
127.0.0.1:6379> rpop list
"1"
127.0.0.1:6379> rpoplpush list list2
"2"
127.0.0.1:6379> lrange list2 0 5
1) "2"
127.0.0.1:6379> lrange list 0 5
1) "5"
2) "4"
3) "3"
127.0.0.1:6379> lrem list 2 4
(integer) 1
127.0.0.1:6379> lrange list 0 -1
1) "5"
2) "3"
127.0.0.1:6379> lpush list 5
(integer) 3
127.0.0.1:6379> lrange list 0 -1
1) "5"
2) "5"
3) "3"
127.0.0.1:6379> lrem list 2 5
(integer) 2
127.0.0.1:6379> lrange list 0 -1
1) "3"
127.0.0.1:6379> brpop list 30
1) "list"
2) "3"
127.0.0.1:6379> brpop list 30 list2 20
1) "list2"
2) "2"
127.0.0.1:6379>
127.0.0.1:6379> sadd set "goods"
(integer) 1
127.0.0.1:6379> sadd set "this" "is"
(integer) 2
127.0.0.1:6379> smembers set
1) "is"
2) "this"
3) "goods"
127.0.0.1:6379> spop set is
(error) ERR value is not an integer or out of range
127.0.0.1:6379> spop set 1
1) "goods"
127.0.0.1:6379> smembers set
1) "is"
2) "this"
127.0.0.1:6379> SRANDMEMBER set 2
1) "is"
2) "this"
127.0.0.1:6379> SRANDMEMBER set 1
1) "is"
127.0.0.1:6379> SRANDMEMBER set 1
1) "is"
127.0.0.1:6379> SRANDMEMBER set 1
1) "this"
127.0.0.1:6379> srem set this
(integer) 1
127.0.0.1:6379> smembers set
1) "is"