在YK,redis机器环境默认都是8核128g内存,一般每个核启动一个redis实例,剩余内存不能太少。如我们这启动了8个进程,每个进程15g内存。
由于我们这个业务使用的缓存,不需要那么高的可靠性,所以默认是存放在内存中的,不会flush到磁盘,这样可以有最好的速度
如下:
14:58 [logwatch@a01.redis.yks.b28.youku]$ cat /etc/redis/redis_6379.conf
daemonize yes
pidfile /var/run/redis/redis_6379.pid
port 6379
tcp-backlog 511
timeout 300
tcp-keepalive 0
loglevel notice
logfile /opt/logs/redis_6379.log
databases 16
save ""
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump_6379.rdb
dir /opt/redis/
slave-serve-stale-data yes
slave-read-only yes
repl-disable-tcp-nodelay no
slave-priority 100
maxmemory 15gb
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes
tty:[0] jobs:[0] cwd:[~]
14:58 [logwatch@a01.redis.yks.b28.youku]$ free -g
total used free shared buffers cached
Mem: 125 16 109 0 0 0
-/+ buffers/cache: 15 110
Swap: 3 0 3
tty:[0] jobs:[0] cwd:[~]
14:59 [logwatch@a01.redis.yks.b28.youku]$ cat /proc/cpuinfo | grep process
processor : 0
processor : 1
processor : 2
processor : 3
processor : 4
processor : 5
processor : 6
processor : 7
tty:[0] jobs:[0] cwd:[~]
配置项:
1、没有save项,或者save "" 时表示数据存放在内存中,不会dump到磁盘里面(可以手动执行save命令保存到磁盘)
2、tcp-backlog 511 tcp连接最大并发数
3、repl-diskless-sync no
redis复制原理
master写文件到磁盘(默认)或者通过socket(2.8新加功能)发送给slave(保存到磁盘上)
slave从磁盘上加载文件到内存,然后完成复制
常用命令:
redis-cli -h hostip -p port
info
shutdown
slaveof host port
slaveof no one (不当从机,当master)
save 写磁盘
CONFIG GET name
CONFIG SET name value (不修改配置文件)
CONFIG REWRITE (把内存中的配置覆盖磁盘上的文件)
randomkey:随机返回key空间的一个key
dbsize:返回当前数据库中key的数目
ttl:获得一个key的活动时间
exists(key):确认一个key是否存在
del(key):删除一个key