签到成功

知道了

CNDBA社区CNDBA社区

Redis 安装配置

2016-09-06 00:40 2579 0 原创 Redis
作者: dave


http://www.cndba.cn/dave/article/196

1     安装tcl 工具
   在安装Redis之前首要先做的是安装Unix的Tcl工具,如果不安装的话后期将无法对Redis进行测试。

You need tcl 8.5 or newer in order to run the Redis test
make[1]: *** [test] Error 1
make[1]: Leaving directory `/root/redis-3.0.4/src'
make: *** [test] Error 2

直接使用Yum 安装:

[root@ahzhixin mnt]# yum install tcl
Loaded plugins: refresh-packagekit, security
dave                                                                       | 3.7 kB     00:00 ...
dave/primary_db                                                            | 3.0 MB     00:00 ...
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package tcl.x86_64 1:8.5.7-6.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

==================================================================================================
 Package            Arch                  Version                       Repository           Size
==================================================================================================
Installing:
 tcl                x86_64                1:8.5.7-6.el6                 dave                1.9 M

Transaction Summary
==================================================================================================
Install       1 Package(s)

Total download size: 1.9 M
Installed size: 4.4 M
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : 1:tcl-8.5.7-6.el6.x86_64                                                       1/1
  Verifying  : 1:tcl-8.5.7-6.el6.x86_64                                                       1/1

Installed:
  tcl.x86_64 1:8.5.7-6.el6                                                                        

Complete![root@ahzhixin mnt]#



2     安装Redis
从官方下载Redis:http://redis.io/download

http://www.cndba.cn/dave/article/196

[root@ahzhixin ~]# tar xzvf redis-3.0.4.tar.gz

[root@ahzhixin ~]# cd redis-3.0.4http://www.cndba.cn/dave/article/196http://www.cndba.cn/dave/article/196

[root@ahzhixin redis-3.0.4]# ls

00-RELEASENOTES  COPYING  Makefile   redis.conf       runtest-sentinel  tests BUGS             deps     MANIFESTO  runtest          sentinel.conf     utils

CONTRIBUTING     INSTALL  README     runtest-cluster  src

[root@ahzhixin redis-3.0.4]#http://www.cndba.cn/dave/article/196

[root@ahzhixin redis-3.0.4]#makehttp://www.cndba.cn/dave/article/196

[root@ahzhixin redis-3.0.4]#make PREFIX=/usr/local/redis installhttp://www.cndba.cn/dave/article/196

http://www.cndba.cn/dave/article/196


其中PREFIX=/usr/local/redis可以省略,省略情况下redis会默认安装到/usr/local/bin目录下。

3     测试Redis

[root@ahzhixin redis-3.0.4]# cd src[root@ahzhixin src]# make test
……刷屏,等2分钟。
  108 seconds - integration/replication-3
  109 seconds - integration/replication-psync
  100 seconds - unit/obuf-limits

/o/ All tests passed without errors!

Cleanup: may take some time... OK



4     复制并修改配置文档

   默认情况下,Redis的服务器启动程序和客户端程序会安装到/usr/local/bin目录下。在启动Redis服务器时,我们需要为其指定一个配置文件,缺省情况下配置文件在Redis的源码目录下,文件名为redis.conf。

[root@ahzhixin redis-3.0.4]# pwd
/root/redis-3.0.4[root@ahzhixin redis-3.0.4]# ls
00-RELEASENOTES  COPYING  Makefile   redis.conf       runtest-sentinel  tests
BUGS             deps     MANIFESTO  runtest          sentinel.conf     utils
CONTRIBUTING     INSTALL  README     runtest-cluster  src[root@ahzhixin redis-3.0.4]#[root@ahzhixin redis-3.0.4]# cp redis.conf /etc/[root@ahzhixin redis-3.0.4]# ll /etc/redis.conf
-rw-r--r-- 1 root root 41403 Sep 15 16:54 /etc/redis.conf[root@ahzhixin redis-3.0.4]#[root@ahzhixin redis-3.0.4]# cat /etc/redis.conf | grep -v '^$' |grep -v '#'
daemonize no
pidfile /var/run/redis.pid
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 0
loglevel notice
logfile ""
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir ./
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
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[root@ahzhixin redis-3.0.4]#




修改了如下两项:
daemonize yes #redis将以守护进程的方式运行,默认为no会暂用你的终端
timeout 300 #当 客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能


其他参数解释参考如下:

1)daemonize no 默认情况下,redis不是在后台运行的。如果需要在后台运行,把该项的值更改为yes;
2)pidfile /var/run/redis.pid当Redis在后台运行的时候,Redis默认会把pid文件放在/var/run/redis.pid,你可以配置到其他地址。当运行多个redis服务时,需要指定不同的pid文件和端口;
3)port 6379指定redis运行的端口,默认是6379;
4)bind 127.0.0.1 指定redis只接收来自于该IP地址的请求,如果不进行设置,那么将处理所有请求。在生产环境中最好设置该项;
5)loglevel debug 指定日志记录级别,其中Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose。debug表示 记录很多信息,用于开发和测试。verbose表示记录有用的信息,但不像debug会记录那么多。notice表示普通的verbose,常用于生产环 境。warning 表示只有非常重要或者严重的信息会记录到日志;
6)logfile /var/log/redis/redis.log 配置log文件地址,默认值为stdout。若后台模式会输出到/dev/null;
7)databases 16 可用数据库数,默认值为16,默认数据库为0,数据库范围在0-(database-1)之间;
8)save 900 1保存数据到磁盘,格式为save ,指出在多长时间内,有多少次更新操作,就将数据同步到数据文件rdb。相当于条件触发抓取快照,这个可以多个条件配合。 save 900 1就表示900秒内至少有1个key被改变就保存数据到磁盘;
9)rdbcompression yes 存储至本地数据库时(持久化到rdb文件)是否压缩数据,默认为yes;
10)dbfilename dump.rdb本地持久化数据库文件名,默认值为dump.rdb;
11)dir ./ 工作目录,数据库镜像备份的文件放置的路径。这里的路径跟文件名要分开配置是因为redis在进行备份时,先会将当前数据库的状态写入到一个临时文件中, 等备份完成时,再把该临时文件替换为上面所指定的文件。而这里的临时文件和上面所配置的备份文件都会放在这个指定的路径当中,AOF文件也会存放在这个目 录下面。注意这里必须指定一个目录而不是文件;
12)slaveof 主从复制,设置该数据库为其他数据库的从数据库。设置当本机为slave服务时,设置master服务的IP地址及端口。在Redis启动时,它会自动从 master进行数据同步;
13)masterauth 当master服务设置了密码保护时(用requirepass制定的密码)slave服务连接master的密码;
14)slave-serve-stale-data yes 当从库同主机失去连接或者复制正在进行,从机库有两种运行方式:如果slave-serve-stale-data设置为yes(默认设置),从库会继续 相应客户端的请求。如果slave-serve-stale-data是指为no,除去INFO和SLAVOF命令之外的任何请求都会返回一个错 误"SYNC with master in progress";
15)repl-ping-slave-period 10从库会按照一个时间间隔向主库发送PING,可以通过repl-ping-slave-period设置这个时间间隔,默认是10秒;
16)repl-timeout 60 设置主库批量数据传输时间或者ping回复时间间隔,默认值是60秒,一定要确保repl-timeout大于repl-ping-slave-period;
17)requirepass foobared 设置客户端连接后进行任何其他指定前需要使用的密码。因为redis速度相当快,所以在一台比较好的服务器下,一个外部的用户可以在一秒钟进行150K次的密码尝试,这意味着你需要指定非常强大的密码来防止暴力破解;
18)rename-command CONFIG "" 命令重命名,在一个共享环境下可以重命名相对危险的命令,比如把CONFIG重名为一个不容易猜测的字符:# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52。如果想删除一个命令,直接把它重命名为一个空字符""即 可:rename-command CONFIG "";
19)maxclients 128设置同一时间最大客户端连接数,默认无限制。Redis可以同时打开的客户端连接数为Redis进程可以打开的最大文件描述符数。如果设置 maxclients 0,表示不作限制。当客户端连接数到达限制时,Redis会关闭新的连接并向客户端返回max number of clients reached错误信息;
20)maxmemory 指定Redis最大内存限制。Redis在启动时会把数据加载到内存中,达到最大内存后,Redis会先尝试清除已到期或即将到期的Key,Redis同 时也会移除空的list对象。当此方法处理后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。注意:Redis新的vm机制,会 把Key存放内存,Value会存放在swap区;
21)maxmemory-policy volatile-lru 当内存达到最大值的时候Redis会选择删除哪些数据呢?有五种方式可供选择:volatile-lru代表利用LRU算法移除设置过过期时间的key (LRU:最近使用 Least Recently Used ),allkeys-lru代表利用LRU算法移除任何key,volatile-random代表移除设置过过期时间的随机 key,allkeys_random代表移除一个随机的key,volatile-ttl代表移除即将过期的key(minor TTL),noeviction代表不移除任何key,只是返回一个写错误。
注意:对于上面的策略,如果没有合适的key可以移除,写的时候Redis会返回一个错误;
22)appendonly no 默认情况下,redis会在后台异步的把数据库镜像备份到磁盘,但是该备份是非常耗时的,而且备份也不能很频繁。如果发生诸如拉闸限电、拔插头等状况,那 么将造成比较大范围的数据丢失,所以redis提供了另外一种更加高效的数据库备份及灾难恢复方式。开启append only模式之后,redis会把所接收到的每一次写操作请求都追加到appendonly.aof文件中。当redis重新启动时,会从该文件恢复出之 前的状态,但是这样会造成appendonly.aof文件过大,所以redis还支持了BGREWRITEAOF指令对appendonly.aof 进行重新整理,你可以同时开启asynchronous dumps 和 AOF;
23)appendfilename appendonly.aof AOF文件名称,默认为"appendonly.aof";
24)appendfsync everysec Redis支持三种同步AOF文件的策略: no代表不进行同步,系统去操作,always代表每次有写操作都进行同步,everysec代表对写操作进行累积,每秒同步一次,默认 是"everysec",按照速度和安全折中这是最好的。
25)slowlog-log-slower-than 10000 记录超过特定执行时间的命令。执行时间不包括I/O计算,比如连接客户端,返回结果等,只是命令执行时间。可以通过两个参数设置slow log:一个是告诉Redis执行超过多少时间被记录的参数slowlog-log-slower-than(微妙),另一个是slow log 的长度。当一个新命令被记录的时候最早的命令将被从队列中移除,下面的时间以微妙微单位,因此1000000代表一分钟。注意制定一个负数将关闭慢日志, 而设置为0将强制每个命令都会记录;
26)hash-max-zipmap-entries 512 && hash-max-zipmap-value 64 当hash中包含超过指定元素个数并且最大的元素没有超过临界时,hash将以一种特殊的编码方式(大大减少内存使用)来存储,这里可以设置这两个临界 值。Redis Hash对应Value内部实际就是一个HashMap,实际这里会有2种不同实现。这个Hash的成员比较少时Redis为了节省内存会采用类似一维数 组的方式来紧凑存储,而不会采用真正的HashMap结构,对应的value redisObject的encoding为zipmap。当成员数量增大时会自动转成真正的HashMap,此时encoding为ht;
27)list-max-ziplist-entries 512 list数据类型多少节点以下会采用去指针的紧凑存储格式;
28)list-max-ziplist-value 64数据类型节点值大小小于多少字节会采用紧凑存储格式;
29)set-max-intset-entries 512 set数据类型内部数据如果全部是数值型,且包含多少节点以下会采用紧凑格式存储;
30)zset-max-ziplist-entries 128 zsort数据类型多少节点以下会采用去指针的紧凑存储格式;
31)zset-max-ziplist-value 64 zsort数据类型节点值大小小于多少字节会采用紧凑存储格式。
32)activerehashing yes Redis将在每100毫秒时使用1毫秒的CPU时间来对redis的hash表进行重新hash,可以降低内存的使用。当你的使用场景中,有非常严格的 实时性需要,不能够接受Redis时不时的对请求有2毫秒的延迟的话,把这项配置为no。如果没有这么严格的实时性要求,可以设置为yes,以便能够尽可 能快的释放内存;




5     Redis 的启动和关闭

Redis 分服务端和客户端。 服务器是控制Redis 启动的,客户端是用来连接Redis 服务端的。

5.1    启动Redis服务
1.默认启动:读取src下的redis.conf配置文件启动redis
    $ ./redis-server

2.指定配置文件启动:
    $ ./redis-server ../etc/redis.conf  (使用指定位置的配置文件来启动Redis)
 
5.2    启动Redis客户端
1.启动默认客户端,连接到默认src下的redis.conf配置文件中地址的Redis
    $ ./redis-cli

2.连接到指定地址的Redis
[root@ahzhixin ~]# redis-cli -h 192.168.0.243
192.168.0.243:6379>

3. 连接到指定地址和端口的Redis
[root@ahzhixin ~]# redis-cli -h 192.168.0.243 -p 6379
192.168.0.243:6379>

http://www.cndba.cn/dave/article/196



http://www.cndba.cn/dave/article/196

版权声明:本文为博主原创文章,未经博主允许不得转载。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
dave

dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 2261
    原创
  • 3
    翻译
  • 578
    转载
  • 191
    评论
  • 访问:7969683次
  • 积分:4346
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ