Here are some simple hints on debugging Redis performance issues.
Monitoring Live Redis Queries
Run the "monitor" command to see queries as they are sent against an Redis instance. Do not use on high traffic instance!
The output looks like this
redis 127.0.0.1:6379> MONITOR
1371241109.735725 "keys" "*"
1371241152.344504 "set" "testkey" "1"
1371241165.169184 "get" "testkey"
Analyzing Slow Commands
When there are too many queries better use "slowlog" to see the top slow queries running against your Redis instance:
slowlog get 25 # print top 25 slow queries
If you suspect latency to be an issue use "redis-cli" built-in support for latency measuring. First measure system latency on your Redis server with
redis-cli --intrinsic-latency 100
and then sample from your Redis clients with
redis-cli --latency -h <host> -p <port>
If you have problems with high latency check if transparent huge pages are disabled. Disable it with
echo never > /sys/kernel/mm/transparent_hugepage/enabled
Check Background Save Settings
If your instance seemingly freezes peridiocally you probably have background dumping enabled.
grep ^save /etc/redis/redis.conf
Comment out all save lines and setup a cron job to do dumping or a Redis slave who can dump whenever he wants to.
Alternatively you can try to mitigate the effect using the "no-appendfsync-on-rewrite" option (set to "yes") in redis.conf.
Check fsync Setting
Per default Redis runs fsync() every 1s. Other possibilities are "always" and "no".
grep ^appendfsync /etc/redis/redis.conf
So if you do not care about DB corruption you might want to set "no" here.