redis共通コマンド、一般的なエラー、構成テクニックなどの共有

15604 ワード


この文章は主にredisの常用命令、よくある誤り、配置の技巧などの分かち合いを紹介して、本文は12条のredisの知識を分かち合って、必要な友达は参考にすることができます
1.redis現在のすべてのkeyを表示
 
    
KEYS *

2.現在のredisの構成情報の表示
 
    
CONFIG GET *

3. MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error.
強制的にredisスナップショットを停止すると、redis実行ユーザーがrdbファイルを書く権限がないか、ディスク領域がいっぱいになり、解決方法:
 
    
config set stop-writes-on-bgsave-error no

例:
 
    
set 'name' 'shenhui'
-MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error.
config set stop-writes-on-bgsave-error no
+OK
set 'name' 'shenhui'
+OK

4. redis 127.0.0.1:6379> CONFIG SET logfile "/var/log/redis/redis-server.log"(error) ERR Unsupported CONFIG parameter: logfile
logfileはsetで動的に設定できません
5.(error)OOM command not allowed when used memory>maxmemoryのオプションが設定されており、redisメモリの使用が上限に達しています.LRUアルゴリズムを設定することでkeyの一部を削除し、スペースを解放できます.デフォルトは有効期限に従いますが、set時に有効期限を付けないとmaxmemoryがいっぱいになります.maxmemoryを設定しない場合、または0 64ビットシステムに設定してメモリを制限しない場合、32ビットシステムは最大3 GBのメモリを使用します.
volatile-lru->LRUアルゴリズムに基づいて生成された期限切れを削除します.allkeys-lru->LRUアルゴリズムに基づいてキーを削除します.volatile-random->期限切れの設定に基づいてkeyをランダムに削除します.allkeys->random->無差別ランダム削除.volatile-ttl->最近の期限切れに基づいてnoeviction->誰も削除せず、書き込み操作時にエラーを返します.
6.reidsログの場所
logfileログの記録方式で、デフォルト値はstdoutで、stdoutに設定され、デーモンプロセス方式で実行されると、ログは/dev/nullにリダイレクトされます.つまり、ログを覚えません.
7.reids構成パラメータの詳細
 
    
#daemonize no  , redis , , yes
daemonize yes
#  redis , Redis pid /var/run/redis.pid , 。
#  redis , pid
pidfile /var/run/redis_6379.pid
#  redis , 6379
port 6379
#  , ,
tcp-backlog 511
#  redis IP , ,
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1
#  , 。 ,
# 0
timeout 0
# TCP keepalive
#  Linux , ( ) ACKs 。 。 0 。
tcp-keepalive 0
#  , notice
# Redis : debug 、 verbose 、 notice 、 warning , verbose
# debug     ,
# varbose   , debug
# notice    verbose ,
# warning  
loglevel notice
#  log
#  stdout , , /dev/null 。
logfile /var/log/redis/redis.log

#  16 , 0 , 0- ( database-1 )
databases 16
################################ #################################
#  , :
#   save 
#    , , rdb 。
#    ,
#    ,
#   save 900 1  900 1 key
#   save 300 10  300 300 key
#   save 60 10000  60 10000 key
# save 900 1
# save 300 10
# save 60 10000
#  。
stop-writes-on-bgsave-error yes
#  ( rdb ) , yes
rdbcompression yes
# RDB chcksum
rdbchecksum yes
#  , dump.rdb
dbfilename dump.rdb

#  。
#  redis , , ,
#  , 。
# AOF

dir /var/lib/redis-server/
################################# #################################
#  . .
#  slav , master IP , Redis , master
# slaveof
#  master ( requirepass )
# slave master
# masterauth
#  , :
# 1)  slave-serve-stale-data yes( ) ,
# 2)  slave-serve-stale-data no , INFO SLAVOF
#     "SYNC with master in progress"
slave-serve-stale-data yes
#  slave 。 slave ( master ) , , 。
#  Redis2.6 , slave read-only
slaveread-only yes
#  PINGs. repl-ping-slave-period , 10
# repl-ping-slave-period 10
# repl-timeout  ping , 60
#  repl-timeout repl-ping-slave-period
# repl-timeout 60
#  slave socket SYNC TCP_NODELAY
#  “ yes ” ,Redis TCP slave , slave , Linux kernel , 40 .
#  "no" , slave , .
repl-disable-tcp-nodelay no
#  。
#  , slave 。
#  slave , 。
# repl-backlog-size 1mb
#  master slave , 。 slave ( )。
# 0
# repl-backlog-ttl 3600
#  master , slave , slave master , 0 master 。
slave-priority 100
#  N slave , <=M , master 。
#  3 slave , <=10 :
# min-slaves-to-write 3
# min-slaves-max-lag 10
#  0
#   min-slaves-to-write 0 ( ), min-slaves-max-lag 10
################################## ###################################
#  。
#  : redis , , 150K ,
# requirepass foobared
#  .
#  。 CONFIG 。
#  :
# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
#  , "" , :
# rename-command CONFIG ""
################################### ###################################
# , ,
#Redis Redis ,
#   maxclients 0 , 。
# , Redis max number of clients reached
# maxclients 10000
#  Redis , Redis , , Redis Key
#  Redis , ”noeviction” , , SET, LPUSH 。
#  : Redis vm , Key , Value swap
#  LRU 。
# maxmemory redis memcached , DB 。
#  Redis ,
# maxmemory
#  Redis ?
# volatile-lru ->  LRU key (LRU:   Least RecentlyUsed )
# allkeys-lru ->  LRU key
# volatile-random ->  key
# allkeys->random -> remove a randomkey, any key
# volatile-ttl ->  key(minor TTL)
# noeviction ->  ,
#  : , key , Redis
#  :  volatile-lru
# maxmemory-policy volatile-lru 
# LRU    minimal TTL , ( ) , 。
# Redis 3 , maxmemory-samples
# maxmemory-samples 3
############################## AOF###############################
#  , redis , , , 、 , 。
#  redis 。
#  append only , redis appendonly.aof , redis , 。
#  appendonly.aof , redis BGREWRITEAOF , appendonly.aof 。
#  asynchronous dumps   AOF
appendonly no
# AOF   ( : "appendonly.aof")
# appendfilename appendonly.aof
# Redis AOF :
# no:  ,   . Faster.
# always: always . Slow, Safest.
# everysec:  , . Compromise.
#  "everysec" , 。
#  Redis , "no" ,
#  "always"
#    "everysec".
# appendfsync always
appendfsync everysec
# appendfsync no
# AOF always everysec , ( AOF ) I/O
#  Linux fsync() 。 , fsync
#  , no-appendfsync-on-rewrite
no-appendfsync-on-rewrite no
# AOF 
#  AOF Redis   BGREWRITEAOF 
#  : Redis ( , )
#  。 ,
#  AOF , AOF
#    percentage 0
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
################################ LUASCRIPTING #############################
# Lua 5000 ( 5 ), 0 。
lua-time-limit 5000
################################LOW LOG################################
# Redis Slow Log  。 I/O , ,
#  slow log : Redis slowlog-log-slower-than( ) ,
#  slow log 。
#  , 1000000 。
#  , 0
slowlog-log-slower-than 10000
#  ,
#    SLOWLOG RESET
#  128 , 128 ,
slowlog-max-len 128
################################    #############################
#  , Redis Pub/Sub 。
#  Redis 。 :
# K     Keyspace , _keyspace@_
# E     Keyevent , _keysevent@_
# g     ( ), DEL, EXPIRE, RENAME, …
# $     String
# s     Set
# h     Hash
# z    
# x     ( key )
# e     ( key )
# A     g$lshzxe , ”AKE”
# notify-keyspace-events 0 。 。
#  : list :
# notify-keyspace-events Elg
#  , , 。
#  K E , 。
notify-keyspace-events “”
##############################    ###############################
#  hash ,
# hash ( ) ,
# Redis Hash Value HashMap , 2 ,
#  Hash Redis , HashMap , valueredisObject encoding zipmap,
#  HashMap, encoding ht 。
hash-max-zipmap-entries 512
hash-max-zipmap-value 64 
#  Hash , list 。
# list 。
list-max-ziplist-entries 512
list-max-ziplist-value 64
# set , 。
set-max-intset-entries 512
#  hashe list , set
# zsort 。
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
# Redis 100 1 CPU redis hash hash ,
#  , , Redis 2 , no 。
#  , yes ,
activerehashing yes
# , ,
# ( / )。
#  :
# normal -> 
# slave  -> slave MONITOR
# pubsub ->  pubsub channel pattern
#  client-output-buffer-limit :
# client-output-buffer-limit  
#  , ( )。
#  , 32 16 /10 ,
#  32 , 16 10 , 。
#  normal , ( ) ,
#  。
#  0
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb60
client-output-buffer-limit pubsub 32mb 8mb60
# Redis , , Key , 。
#  , Redis “ Hz ” 。
#  ,“ Hz ” 10 。
#  Redis CPU , key Redis , 。
#  1 500 , 100 。
#  10 , 100 。
hz 10 
#  AOF , , 32M 。
aof-rewrite-incremental-fsync yes

8.Redis公式文書のVMの使用提案:
keyが小さくvalueが大きい場合、VMを使用すると効果的です.このように節約するメモリが比較的大きいためである.キーが小さくない場合は、キー、valueを新しいvalueに組み合わせるなど、非常に大きなキーを大きなvalueに変える方法を考えることができます.linux ext 3などの疎ファイルをサポートする比較的良いファイルシステムを使用してswapファイルを保存したほうがいいです.vm-max-threadsというパラメータは、swapファイルにアクセスするスレッド数を設定し、マシンのコア数を超えないように設定し、0に設定と、swapファイルに対する操作はすべてシリアルである.比較的長い時間の遅延をもたらす可能性があるが、データの整合性には良好な保証がある.VM機能があって、Redisはついにメモリ容量の制限を受ける悪夢から抜け出して、私達はそれをRedisデータベースと呼ぶことができるようで、私達はまたどれだけの新しい使い方が発生することができることを想像することができます.もちろん、この機能はRedisの従来の非常に優れたBのメモリ記憶性能に影響を与えないことが望ましい.
9.redis永続化パスとログパスの変更
 
    
vim redis.conf
logfile /data/redis_cache/logs/redis.log #

dir/data/redis_Cache#持続化パス、修正後dump.rdb永続化ファイルを/data/redis_にコピーcache下
まずredisを殺してdumpをコピーします.rdb,起動
10.クリアランスキャッシュ
 
    
./redis-cli    #
dbsize
flushall     #
exit

11.redisの現在のデータベースのすべてのKeyを削除
 
    
flushdb

12.redisのすべてのデータベースのkeyを削除する
 
    
flushall