Debian纯手动安装redis2.6.13,以及详细配置介绍,个人实战版

Debian手动安装redis2.6.13(截止2013年6月4日官方最新版)

                  --以及详细配置

  前段时间在网上购买了一个树莓派(英文名 Raspberry Pi 有兴趣的朋友可以搜一下,目前很火,我叫他:Box computer),硬件参数:CPU:ARM7(安装时将主频超到900MHZ,比较合适,加了两个铜散热片,温度一般在50℃左右),内存512M,其中分给了GPU64M,装了一个4G的SD卡,能比烟盒大点的电脑,麻雀虽小一应俱全,包括一个网口,两个USB,HDMI,SD卡(代表硬盘),视频AVI,声卡,国内有一位达人专门搞了一个爱好者论坛,有很好的资料,他有淘宝店专门出售,销量不错,淘宝有很多,但是在他那买的原因就是从他那买,可以提供很好的技术支持和很多的外围嵌入式开发设备,呵呵算是给朋友打个广告吧,喜欢的可以去他的论坛,声明一点就是,我们是纯友情关系啊,不牵扯任何商业关系,他的淘宝店最近也正在做活动,买树莓派送HP的电源,论坛地址www.shumeipai.net价格低廉也是它最大的特点,国外35$,国内我在他家淘宝上买全下来也就是快400块。
  大概介绍一下我的设备其中包括(因为本人目前没有时间研究嵌入式开发所以设备很基础,外围设备暂时没有):
  1. 树莓派主板
  2. 亚克力盒子(个人水平不行,也可能用力过度,盒子装的很垃圾断了几个地方,最后还是用胶带固定了2圈)
  3. 供电电源
  4. HDMI线一根,我直接接在我家的液晶电视上
  5. 无线USB键盘,自己有
  6. SD卡自己有
  7. 无线网卡(HDUP黄金版免驱动,建议最好买一个免驱动的)
  好了闲话短说,我各种折腾一遍以后,基本环境搭成,包括硬件,包括系统(核心是Debian),来张图炫一下吧

(是不是很酷呢?)


(这一对比更能感受到它的体积了吧,就是烟档次太低,呵呵)
  我只接了一个电源线和一个无线网卡,没有接别的任何东西,原因是我已经做好了系统,无线网络配置好了,直接台式机SSH登陆,进行linux命令行操作
  至于树莓派的基本这些操 作就不赘述,好像说了太多废话了,闲话不说,进入主题:
   1.SSH登陆上去以后,跟linux操作 完全一样,最好有一定的linux命令行使用知识,这是基础
   2.首先你需要下载redis的tar包,进行解压编译,目前官方最新版本是2.6.13,安装编译相当简单,不需要任何编译参数,我将目录名变为了redis-master,看个人喜好
 5步OK:
  1.  wget http://redis.googlecode.com/files/redis-2.6.13.tar.gz
  2.  tar xzf redis-2.6.13.tar.gz
  3.  mv redis-2.6.13 redis-master
  4.  cd redis-master
  5.  make
 

   3.这就已经安装完成了,接下来最重要的就是redis的运行配置参数,redis文件夹下面有一个redis.conf的配置文件,编辑此文件,里面有很多的英文注释和配置行,介绍了参数的作用和用法,下面进行详细介绍:

------------------------------------------------------------------------------------------------------

配置redis

daemonize yes    #作为守护进程(后台程序)执行,默认为no

pidfile /usr/local/redis-master/var/redis.pid   #指定pid文件。

port 6379    #指定端口。

bind 127.0.0.1    #绑定连接。

timeout 600    #超时断开连接,如果为0表示永不超时。

tcp-keepalive 60 #tcp连接保持,选择建议的60秒。

loglevel debug|verbose|notice|warning   #日志信息越来越少,debug>verbose>notice>warning,生产环境用notice

logfile /usr/local/redis-master/log/redis.log   #指定日志文件,stdout表标准输出(如果daemonize,日志会被发送到/dev/null)。

databases 10    #设置数据库数量,默认数据库是DB 0,连接时可以使用SELECT<dbid>(dbid0databases-1)选择不同的数据库。

 

#### SNAPSHOTTING ####

save 900 1    #刷新快照到硬盘中,必须满足两者要求才会触发,即900秒之后至少1个关键字发生变化。

save 300 10  #必须是300秒之后至少10个关键字发生变化。

save 60 10000 #必须是60秒之后至少10000个关键字发生变化。

stop-writes-on-bgsave-error yes   #后台存储错误停止写。

rdbcompression yes    #使用LZF压缩rdb文件。

rdbchecksum yes    #存储和加载rdb文件时校验。

dbfilename dump.rdb    #设置rdb文件名。

dir /usr/local/redis-master/data/   #设置工作目录,rdb文件会写入该目录。

 

#### REPLICATION ####

slaveof <masterip><masterport>    #创建slave,它是master的备份。

masterauth <master-password>   #如果master设置了密码,slave需要进行认证。

slave-serve-stale-data yes   #slave失去与master的连接,或正在拷贝中,如果为yesslave会响应客户端的请求,数据可能不同步甚至没有数据,如果为noslave会返回错误"SYNC with master in progress"

slave-read-only yes    #如果为yesslave实例只读,如果为noslave实例可读可写。

repl-ping-slave-period 10   #slave发送pingmaster的时间间隔,单位是秒。

repl-timeout 60    #Bulktransfer I/O超时,或ping响应超时,单位是秒,值必须要比repl-ping-slave-period大。

slave-priority 100    #如果master不能再正常工作,那么会在多个slave中,选择优先值最小的一个slave提升为master,优先值为0表示不能提升为master

 

#### SECURITY ####

requirepass <password>   #设置访问密码,密码要足够强。

rename-command <dangerous-command><strange-command>    #给一些危险的指令进行重命名,如果重命名为“”,取消该命令。

 

#### LIMITS ####

maxclients 10000    #客户端并发连接数的上限是10000,到达上限,服务器会关闭所有新连接并返回错误"max numberof clients reached"

maxmemory <bytes>    #设置最大内存,到达上限,服务器会根据驱逐政策(eviction policy)删除某些键值,如果政策被设置为noeviction,那么redis只读,对于增加内存的操作请求返回错误。

maxmemory-policyvolatile-lru|allkeys-lru|volatile-random|allkeys-random|volatile-ttl|noeviction   #设置驱逐政策(eviction policy)

maxmemory-samples 3    #LRUminimal TTL是近似算法(为了节省内存),它们会在一个有3个键值的样本中选择较没用的那个。

 

#### APPEND ONLY MODE ####

appendonly no    #redis默认采用快照(snapshotting)异步转存到硬盘中,它是根据save指令来触发持久化的,当Redis异常中断或停电时,可能会导致最后一些写操作丢失。AOF(Append OnlyFile,只追加文件)可以提供更好的持久性,结合apendfsync指令可以把几分钟的数据丢失降至一秒钟的数据丢失,它通过日志把所有的操作记录下来,AOFRDB持久化可以同时启动。

appendfilename appendonly.aof   #指定aof的文件名。

apendfsync always|everysec|no   #调用fsync()写数据到硬盘中,always是每一次写操作就马上同步到日志中,everysec是每隔一秒强制fsyncno是不调用fsync(),让操作系统自己决定何时同步。

no-appendfsync-on-rewrite no   #如果为yes,当BGSAVEBGREWRITEAOF指令运行时,即把AOF文件转写到RDB文件中时,会阻止调用fsync()

auto-aof-rewrite-percentage 100

auto-aof-rewrite-min-size 64mb   #Redis会将AOF文件最初的大小记录下来,如果当前的AOF文件的大小增加100%并且超过64mb时,就会自动触发Redis改写AOF文件到RDB文件中,如果auto-aof-rewrite-percentage0表示取消自动rewrite功能。

 

#### LUA SCRIPTING ####

lua-time-limit 5000    #一个Lua脚本最长的执行时间为5000毫秒(5秒),如果为0或负数表示无限执行时间。

 

#### SLOW LOG ####

slowlog-log-slower-than 10000   #当某个请求执行时间(不包括IO时间)超过10000微妙(10毫秒),把请求记录在慢日志中,如果为负数不使用慢日志,如果为0强制记录每个指令。

slowlog-max-len 128    #慢日志的最大长度是128,当慢日志超过128时,最先进入队列的记录会被踢出来,慢日志会消耗内存,你可以使用SLOWLOG RESET清空队列回收这些内存。

 

#### ADVANCED CONFIG ####

hash-max-ziplist-entries 512

hash-max-ziplist-value 64    #较小的hash可以通过某种特殊的方式进行编码,以节省大量的内存空间,我们指定最大的条目数为512,每个条目的最大长度为64

list-max-ziplist-entries 512

list-max-ziplist-value 64    #同上。

zset-max-ziplist-entries 128

zset-max-ziplist-value 64    #同上。

activerehashing yes    #重新哈希the main Redis hash table(the one mapping top-level keysto values),这样会节省更多的空间。

client-output-buffer-limit normal 0 0 0   #对客户端输出缓冲进行限制可以强迫那些就不从服务器读取数据的客户端断开连接。对于normal client,第一个0表示取消hard limit,第二个0和第三个0表示取消soft limitnormal client默认取消限制,因为如果没有寻问,他们是不会接收数据的。

client-output-buffer-limit slave 256mb64mb 60    #对于slave clientMONITER client,如果client-output-buffer一旦超过256mb,又或者超过64mb持续60秒,那么服务器就会立即断开客户端连接。

client-output-buffer-limit pubsub 32mb8mb 60    #对于pubsub client,如果client-output-buffer一旦超过32mb,又或者超过8mb持续60秒,那么服务器就会立即断开客户端连接。

 

#### INCLUDES ####

include /path/to/conf    #包含一些可以重用的配置文件。

------------------------------------------------------------------------------------------------------

最后说一点:

  调整系统内核参数,如果内存情况比较紧张的话,需要设定内核参数:

   Linux命令:cat /proc/sys/vm/overcommit_memory

  这里说一下这个配置的含义:/proc/sys/vm/overcommit_memory

   该文件指定了内核针对内存分配的策略,其值可以是0、1、2。

         0,表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。

         1,表示内核允许分配所有的物理内存,而不管当前的内存状态如何。

         2,表示内核允许分配超过所有物理内存和交换空间总和的内存

    修改方法:

     vim /etc/sysctl.conf

     末尾追加:vm.overcommit_memory=1

     然后执行:sysctl vm.overcommit_memory=1 使之生效

  Redis在dump数据的时候,会fork出一个子进程,理论上child进程所占用的内存和parent是一样的,比如parent占用的内存为 8G,这个时候也要同样分配8G的内存给child, 如果内存无法负担,往往会造成redis服务器的down机或者IO负载过高,效率下降。所以这里比较优化的内存分配策略应该设置为 1(表示内核允许分配所有的物理内存,而不管当前的内存状态如何)




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值