redis原理編及び性能最適化
8744 ワード
一、redis単一スレッドはなぜ性能が良いのか
1.解釈
2.ではなぜRedisは単一スレッドなのか
二、持続化メカニズム
1.持続化の概念
2.RDB(Redis DataBase)方式
3.AOF(Append Only File)方式
三、redis期限切れポリシー
1.有効期限の設定
2.3つの期限切れポリシー
3.Redisが採用した期限切れの策略——不活性削除+定期削除
4.RDBの期限切れkeyに対する処理——期限切れkeyはRDBに何の影響もない
5.AOFの期限切れkeyに対する処理——期限切れkeyはAOFに何の影響もない
四、redisメモリ淘汰メカニズム
1.概念
2.構成
3.プロセス
4.メモリ淘汰ポリシー
5.淘汰ポリシーの選択方法
五、redisよくある問題分析(貫通、破壊、雪崩)
1.キャッシュスルー
2.キャッシュ雪崩
3.キャッシュ破壊
六、redis最適化
1.redis性能に影響する要因
参考サイト
Redis学習ノート
Redis失効ポリシー
注:文章は他の文章を参考にして自分で整理したもので、一部の参考になるかもしれないし、大部分の参考になるかもしれないが、決して直接転載するわけではない.権利侵害したら削除すると思う.私はこれを自分のノートに使うだけだ.ついでに知識を整理すると同時に、一部の人を助けることができる.ps:間違いがあったら、皆さんのご指摘をお願いします.弟さんは感謝に堪えません.
1.解釈
1) , , 。 , HashMap,HashMap O(1)
2) , ,Redis
3) , , CPU, , ,
4) I/O , IO
5) , ,Redis VM , ,
2.ではなぜRedisは単一スレッドなのか
1) : Redis ,CPU Redis ,Redis 。 , CPU , ( !)
二、持続化メカニズム
1.持続化の概念
1) , , , , ,
2)Redis , , linux , Redis , , ,Redis ,
3)Redis
(1)RDB
(2)AOF , Redis ,
2.RDB(Redis DataBase)方式
1)RDB
(1) , Snapshot ,
(2)RDB dump.rdb
(3)Redis (fork) , , , 。 , IO , , , RDB AOF 。RDB
2) RDB
(1) ( : cp dump.rdb dump_new.rdb)
(2) save bgsave
a. save:save , , ( )
b. bgsave:Redis , 。 lastsave ( )
c. flushall , dump.rdb , ,
3)
(1) (dump.rdb) redis , config get dir
4)
(1) RDB :redis-cli config set save ""
5)
(1) ( AOF , ,RDB )
(2)
(3) , Redis , 。 , 24 , 30 。 , ,
(4) ,RDB 。
(5) 。 Redis , , fork , , IO
6)
(1) , redis ,
(2)fork , , 2 ( RDB fork , , , , 1 )
3.AOF(Append Only File)方式
1)AOF
(1) , Redis ( ), ,redis , ,redis (AOF appendonly.aof )
2)AOF / /
(1)
a. : appendonly no, yes;
b. aof ( config get dir );
c. : redis ;
(2)
a. : appendonly no, yes;
b. : redis-check-aof --fix ;
c. : redis ;
3)rewrite
(1)rewrite
a. AOF , , , AOF ,Redis AOF , . bgrewriteaof;
(2)
a. AOF , fork ( rename), , Set 。 aof , aof , aof , ;
(3)
a. Redis AOF , AOF rewrite 64M ;
4)
a. :appendfsync always , ;
b. :appendfsync everysec , , , ;
c. :appendfsync no ;
5)
a. , 。Redis 3 , 、 。 , , , , 。 , , 。 , 。 , ,
b. append , , 。 , , Redis , redis-check-aof
c. ,Redis rewrite 。 Redis append , Redis 。 rewrite
d. AOF 、 。 ,
6)
a. aof rdb , rdb;
b. ,AOF RDB。 , , RDB
三、redis期限切れポリシー
1.有効期限の設定
1)expire key time( ) --
2)setex(String key, int seconds, String value) --
:
a. , expire
b. ,
c. , , persist key
2.3つの期限切れポリシー
1)
(1) : key , key , key , key
(2)
a.
(3)
a. key , key CPU , CPU ,CPU , key
b. , key ( ),
c.
2)
(1) :key , key , , , null
(2)
a. key , key, CPU , ( , key )
(3)
a. key , , , ( )
3)
(1) : key
(2)
a. , CPU -- " "
b. key-- " "
(3)
a. , " "
b. CPU , " "
(4)
a. ( ) ( )( )
3.Redisが採用した期限切れの策略——不活性削除+定期削除
1)
(1) get setnx , key
(2) , key,
(3) ,
2) ( , key)
(1) ( redis.conf "database" , 16)
(2) key( 20 key, 20 , )
a. key ,
b. key, key , , key
c. , ,
4.RDBの期限切れkeyに対する処理——期限切れkeyはRDBに何の影響もない
1) RDB
(1) key , , key RDB
2) RDB
(2) , key , , ( )
5.AOFの期限切れkeyに対する処理——期限切れkeyはAOFに何の影響もない
1) AOF
(1) key , , ( key aof , )
(2) key , , aof del ( aof )
2)AOF
(1) , key , key aof
四、redisメモリ淘汰メカニズム
1.概念
1)redis ,
2.構成
1)maxmemory : maxmemory 0 Redis
2)maxmemory-policy :
ps: redis ,
3.プロセス
1) , ( set)
2) ,Redis , maxmemory (key),
3) , ,
4.メモリ淘汰ポリシー
1)volatile-lru : 。redis , ,
2)volatile-ttl : 。redis , ,
3)volatile-random : 。
4)allkeys-lru : 。 , ,
5)allkeys-random : , , ,
6)no-enviction : , , ,
5.淘汰ポリシーの選択方法
1)allkeys-lru: , , , allkeys-lru
2)allkeys-random: key ,
3)volatile-ttl: Redis key eviction
4)volatile-lru volatile-random Redis , Redis , key , allkeys-lru
五、redisよくある問題分析(貫通、破壊、雪崩)
1.キャッシュスルー
1)
(1) key, , DB, DB
2)
(1) , bitmap, key, key
(2) key DB , ,
2.キャッシュ雪崩
1)
(1) key , , DB 、 ,
2)
(1) , key ,
(2) 。A1 ,A2 ,A1 A2
(3) reload , ,
3.キャッシュ破壊
1)
(1) key, , , DB, DB 、
2)
(1) key , SETNX(set if not exists) key key , key
六、redis最適化
1.redis性能に影響する要因
1) 。 ping 。 , Gbits/s 。 ,Redis CPU
2)CPU 。 ,Redis CPU
3) 。 10KB , 。
4)Redis 。 ,Redis
5) , TCP/IP UNIX 。 , UNIX TCP/IP 50%
6) pipelining ,UNIX
7) Redis , ( 1500 ) , pipelining
8) CPU ,Redis NUMA
9) , 。 epool/kqueue ,Redis
10) , NIC(s)
11) ,Redis , ,
参考サイト
Redis学習ノート
Redis失効ポリシー
注:文章は他の文章を参考にして自分で整理したもので、一部の参考になるかもしれないし、大部分の参考になるかもしれないが、決して直接転載するわけではない.権利侵害したら削除すると思う.私はこれを自分のノートに使うだけだ.ついでに知識を整理すると同時に、一部の人を助けることができる.ps:間違いがあったら、皆さんのご指摘をお願いします.弟さんは感謝に堪えません.