Redis安装说明
####  由于makefile文件已经写好,我们只需要直接在源码目录执行make命令进行编译即可
wget http://redis.googlecode.com/files/redis-2.2.4.tar.gz
tar xzf redis-2.2.4.tar.gz
cd redis-2.2.4
###由于make file在源码里已经写好,所以make就行了
make
####命令都在src目录下

####以下是配置文件修改:
daemonize no为yes                            让程序后台运行
pidfile /appsdata/apps/redis/logs/redis.pid  redis的pid路径
port 6379                                    设置的端口
bind 192.168.8.33                             本机的ip



####启动redis:
/appsdata/apps/redis/src/redis-server  /appsdata/apps/redis/redis.conf

####redis-benchmark 测试性能
./src/redis-benchmark # 可测试性能 benchmark ,会很详细的输出一些信息
# 客户端可以通过 redis-cli 命令实际set/get数据,或者telnet 127.0.0.1 6379 也行

####启动过程
Reids在启动时有一些策略,可从源码中寻找,这里简单说下:
1.初始化全局服务器配置 通过函数:initServerConfig() 完成
2.加载配置文件 通过函数:loadServerConfig() 完成
3.初始化服务器 通过函数:initServer() 完成
4.加载数据库: appendfile 加载 OR dbfile加载
5.网络监听:Redis没有使用libevent或者libev,而是自己实现的一个轻量级的lib


####redis.conf配置文件说明:
#redis-server ——– Redis服务器的daemon启动程序
#redis-cli ———— Redis命令行操作工具。当然,你也可以用telnet根据其纯文本协议来操作
#redis-benchmark —- Redis性能测试工具,测试Redis在你的系统及你的配置下的读写性能
配置
修改overcommit_memory文件(内存分配的策略),默认设置是 0 ,但这样会redis启动时会warling报错,所以需要修改,当然一般使用redis的时候都会修改
echo 1 > /proc/sys/vm/overcommit_memory
#0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
#1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
#2, 表示内核允许分配超过所有物理内存和交换空间总和的内存
编辑 /etc/redis.conf 配置文件
daemonize yes # 转为守护进程,否则启动时会每隔5秒输出一行监控信息
save 60 1000 # 意为60秒有1千条数据就dump到硬盘
maxmemory 256000000 #分配256M内存,生产环境下最好设置这个值
dir /data/redis/ #数据快照的保存目录
Redis在启动时会把所有数据加载到内存中,所以设定maxmemory相对安全。
举例来说:一个中型网站有100万注册用户,如果这些资料要用Redis来存储,内存的容量必须能够容纳这100万用户。但是业务实际情况是100万用户只有5万活跃用户,1周来访问过1次的也只有15万用户,因此全部100万用户的数据都放在内存有不合理之处。Redis 2.0增加了VM特性。让Redis数据容量突破了物理内存的限制。并实现了数据冷热分离。但是作者在新版本之中已经抛弃了VM,采用新的 diskstore 模型
下面是redis.conf的主要配置参数的意义:
daemonize: 是否以后台daemon方式运行
pidfile: pid文件位置
port: 监听的端口号
timeout: 请求超时时间
loglevel: log信息级别。如果配置Redis为守护进程方式运行,而这里又配置为日志记录方式为标准输出,则日志将会发送给/dev/null
logfile: log文件位置
databases: 开启数据库的数量
save * *: 保存快照的频率,第一个*表示多长时间,第三个*表示执行多少次写操作。在一定时间内执行一定数量的写操作时,自动保存快照。可设置多个条件。
rdbcompression: 是否使用压缩。如不使用文件变的巨大
dbfilename: 数据快照文件名(只是文件名,不包括目录)
dir: 数据快照的保存目录(这个是目录)
appendonly: 是否开启appendonlylog,开启的话每次写操作会记一条log,这会提高数据抗风险能力,但影响效率。
appendfilename: 指定更新日志文件名,默认为appendonly.aof
appendfsync: appendonlylog如何同步到磁盘(三个选项,分别是每次写都强制调用fsync、每秒启用一次fsync、不调用fsync等待系统自己同步)
vm-enabled: 因为redis是一个内存数据库,而且当内存满的时候,无法接收新的写请求,所以在redis 2.0中,提供了虚拟内存的支持。但是需要注意的是,redis中,所有的key都会放在内存中,在内存不够时,只会把value值放入交换区。这样保证了虽然使用虚拟内存,但性能基本不受影响,同时,你需要注意的是你要把vm-max-memory设置到足够来放下你的所有的key
vm-swap-file: /tmp/redis.swap 设置虚拟内存的交换文件路径
vm-max-memory: 这里设置开启虚拟内存之后,redis将使用的最大物理内存的大小。默认为0,redis将把他所有的能放到交换文件的都放到交换文件中,以尽量少的使用物理内存。在生产环境下,需要根据实际情况设置该值,最好不要使用默认的0