安装
wget http://redis.googlecode.com/files/redis-2.4.5.tar.gz
tar zxvf redis-2.4.5.tar.gz
cd redis-2.4.5
make //redis默认采用jemalloc,如果想要tcmalloc的请用make USE_TCMALLOC=yes && 或libcmalloc 请用make
FORCE_LIBC_MALLOC=yes
make install //如果想要将二进制执行文件安装到/usr/local/bin
配置
默认配置文件地址为/usr/local/redis/redis.conf
cp /usr/local/redis/redis.conf /usr/local/redis/redis_bak.conf
#是否作为守护进程运行
daemonize yes
#配置pid的存放路径
pidfile /var/run/redis.pid
#Redis默认监听端口
port 6379
#限定地址
bind 127.0.0.1
#使用unix socket
unixsocket /tmp/redis.sock
#文件权限
unixsocketperm 755
#客户端闲置多少秒后,断开连接
timeout 30
#日志级别 debug/verbose/notice/warning
loglevel verbose
#指定日志输出的文件名,也可指定到标准输出端口
loglevel stdout
#log到系统日志中
syslog-enabled no
#redis在系统日志中标识符
syslog-ident redis
#Must be USER or between LOCAL0-LOCAL7
syslog-facility local0
#设置数据库的数量,默认连接的数据库是0,可以通过select N来连接不同的数据库
databases 16
###############Save the DB on disk
#当有一条Keys数据被改变时,900秒刷新到disk一次
save 900 1
#当有10条Keys数据被改变时,300秒刷新到disk一次
save 300 10
#当有1万Keys数据被改变时,60秒刷新到disk一次
save 60 10000
#在进行镜像备份时,是否进行压缩
rdbcompression yes
#镜像备份文件名
dbfilename dump.rdb
#数据库镜像备份的文件放置的路径
dir /usr/local/redis/dump
###############
REPLICATION主从配置
#从redis配置主redis地址和端口
slaveof 10.10.15.27 6379
#从redis连接主redis需要的密码
masterauth redis
#当与主服务器断链的时候 是否依然供服
slave-serve-stale-data yes
#向主服务器PING的频率,单位为秒
repl-ping-slave-period 10
#向主服务器PING的频率,单位为秒
repl-ping-slave-period 10
#I/O超时或PING超时
repl-timeout 60
###############SECURITY安全验证
#设定访问密码
requirepass foobared
#I/O超时或PING超时
requirepass foobared
#I/O超时或PING超时
requirepass foobared
###############LIMITS设定限制
#限制同时连接客户数 0意味无限 超数量时,客户端将收到error信息
maxclients 10240
#设置redis能够使用的最大内存
maxmemory 8gb
#最大内存达到时,移除策略 volatile-lru/allkeys-lru/volatile-random/allkeys->random/volatile-ttl/noeviction
maxmemory-policy volatile-lru
#移除策略的抽样计算
maxmemory-samples 3
###############APPEND ONLY MODE
#开启appendonly模式之后,redis会把所接收到的每一次写操作请求都追加到appendonly.aof文件中
appendonly no
#appendonly 文件名
appendfilename appendonly.aof
#设置对appendonly.aof文件进行同步的频率 always表示每次有写操作都进行同步 everysec表示每秒同步 no不主动fsync,由OS自己来完成
appendfsync everysec
#进行rewrite时,是否需要fsync
no-appendfsync-on-rewrite no
#当AOF文件增长了这个比例(这里是增加了一倍),则后台rewrite自动运行
auto-aof-rewrite-percentage 100
#进行后面rewrite要求的最小AOF文件大小。这两个选项共同决定了后面rewrite进程是否到达运行的时机
auto-aof-rewrite-min-size 64mb
#rewrite是指当AOF很大的时候,通过重写内存的数据来删除原来的AOF文件,生成最新的内存数据的AOF日志,即把当前的结果逆转化为相应的操作命令写到AOF文件中
###############SLOW LOG
# 执行命令所耗时间 10ms
slowlog-log-slower-than 10000
# slow log长度
slowlog-max-len 1024
###############VIRTUAL MEMORY
#Virtual Memory is deprecated in Redis 2.4 所以不提也罢
###############ADVANCED CONFIG
#redis hash是一个string类型的field和value的映射表.它的添加,删除操作都是O(1)(平均).hash特别适合用于存储对象。相较于将对象的每个字段存成单个string类型。将一个对象存储在hash类型中会占用更少的内存,并且可以更方便的存取整个对象。省内存的原因是新建一个hash对象时开始是用zipmap(又称为small hash)来存储的。这个zipmap其实并不是hash table,但是zipmap相比正常的hash实现可以节省不少hash本身需要的一些元数据存储开销。尽管zipmap的添加,删除,查找都是O(n),但是由于一般对象的field数量都不太多。所以使用zipmap也是很快的,也就是说添加删除平均还是O(1)。如果field或者value的大小超出一定限制后,redis会在内部自动将zipmap替换成正常的hash实现. 这个限制可以在配置文件中指定
# 配置字段最多64个
hash-max-zipmap-entries 512
# 配置value最大为512字节
hash-max-zipmap-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
# 开启之后 redis将在每100毫秒时使用1毫秒的CPU时间对redis的hash表进行重新hash
activerehashing yes
启动
/usr/local/redis/src/redis-server /usr/local/redis/redis.conf
redis-php
wget https://nodeload.github.com/nicolasff/phpredis/tarball/master
tar zxvf phpredis.tar.gz
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config && make && make install
vi php.ini
extension = "redis.so"
session用redis
session.save_handler = redis
session.save_path = "tcp://host1:6379?weight=1, tcp://host2:6379?weight=2&timeout=2.5, tcp://host3:6379?weight=2"
动态配置
/usr/local/redis/src/redis-cli -a passwd
config get *
config set loglevel warning