linux中Redis 安装 及 主从配置教程

  Redis是一个开源、支持网络、基于内存、键值对存储数据库。与其他非关系型数据库主要不同在于,Redis中值的类型不仅限于字符串(Strings),还支持如下抽象数据类型:(列表)Lists、(集合)Sets、(有序集合)Sorted sets 、(哈希)Hashes。Redis 通过 RDB、AOF 两种方式来实现数据的持久化。

  安装Redis

  Redis 源码包保存路径 /usr/local/src

  Redis 软件安装路径 /usr/local/redis

  编译 Redis 前先安装 tcl,若不安装,在 make test 阶段会提示错误。

[root@z-dig ~]# yum -q -y install tcl
[root@z-dig ~]# cd /usr/local/src/
[root@z-dig src]# wget http://download.redis.io/releases/redis-3.0.5.tar.gz
[root@z-dig src]# tar xf redis-3.0.5.tar.gz
[root@z-dig src]# cd redis-3.0.5
[root@z-dig redis-3.0.5]# make
[root@z-dig redis-3.0.5]# make test
...
\o/ All tests passed without errors!

Cleanup: may take some time... OK
make[1]: Leaving directory `/usr/local/src/redis-3.0.5/src'
[root@z-dig redis-3.0.5]# make PREFIX=/usr/local/redis-3.0.5 install
[root@z-dig redis-3.0.5]# mkdir /usr/local/redis-3.0.5/conf -p
[root@z-dig redis-3.0.5]# ln -s /usr/local/redis-3.0.5/ /usr/local/redis
[root@z-dig redis-3.0.5]# cp redis.conf /usr/local/redis/conf/
[root@z-dig redis-3.0.5]# cd /usr/local/redis
[root@z-dig redis]# pwd
/usr/local/redis
[root@z-dig redis]# tree .
.
├── bin
│   ├── redis-benchmark
│   ├── redis-check-aof
│   ├── redis-check-dump
│   ├── redis-cli
│   └── redis-server
└── conf
    └── redis.conf

2 directories, 6 files
[root@z-dig redis]#
  到此 Redis 已安装在 /usr/local/redis

  修改配置文件

  由于以下配置在某些配置项后添加了注释,所以不能直接使用,使用时需要把后面的注释删除。

[root@z-dig redis]# grep -Ev '#|^$' conf/redis.conf
daemonize yes #run as a daemon
pidfile /var/run/redis.pid # pid file
port 6379 # server port
tcp-backlog 511 # < /proc/sys/net/core/somaxconn
bind 127.0.0.1 # bind network interface
timeout 0 # Close the connection after a client is idle for N seconds
tcp-keepalive 0
loglevel warning # verbosity level
logfile "/var/log/redis.log"
databases 16 # number of databases begain with 0
save 900 1 # after 900 sec (15 min) if at least 1 key changed
save 300 10 # after 300 sec (5 min) if at least 10 keys changed
save 60 10000 # after 60 sec if at least 10000 keys changed
stop-writes-on-bgsave-error yes
rdbcompression yes # compress dump.rdb
rdbchecksum yes # check dump.rdb
dbfilename dump.rdb # dump file name
dir ./ # dump file path
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
requirepass www.111cn.net # password for redis when client connect to this server
appendonly no # use AOF or RDB
appendfilename "appendonly.aof" # AOF file name
appendfsync everysec # save frequency
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@z-dig redis]#
  调整内核参数

[root@z-dig redis]# echo 512 > /proc/sys/net/core/somaxconn
  启动 redis

[root@z-dig redis]# /usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf
[root@z-dig redis]# lsof -i:6379
COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
redis-ser 20504 root    4u  IPv4 139391      0t0  TCP localhost:6379 (LISTEN)
[root@z-dig redis]#
  测试

[root@z-dig redis]# ln -s /usr/local/redis/bin/redis-cli /usr/local/sbin/
[root@z-dig redis]# redis-cli -h 127.0.0.1 -p 6379 -a www.111cn.net
127.0.0.1:6379> set name mr.zhou
OK
127.0.0.1:6379> get name
"mr.zhou"
127.0.0.1:6379>
127.0.0.1:6379> help shutdown

  SHUTDOWN [NOSAVE] [SAVE]
  summary: Synchronously save the dataset to disk and then shut down the server
  since: 1.0.0
  group: server

127.0.0.1:6379>
127.0.0.1:6379> shutdown save
not connected>
not connected> get name
Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected>
not connected> quit
[root@z-dig redis]# lsof -i:6379
[root@z-dig redis]#
[root@z-dig redis]# /usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf
[root@z-dig redis]# lsof -i:6379
COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
redis-ser 20675 root    4u  IPv4 143036      0t0  TCP localhost:6379 (LISTEN)
[root@z-dig redis]# redis-cli -h 127.0.0.1 -p 6379 -a www.111cn.net get name
"mr.zhou"
[root@z-dig redis]#
  基础测试完成。根据实际环境进行配置调优。

  多实例主从配置

[root@z-dig redis]# redis-cli -h 127.0.0.1 -p 6379 -a www.111cn.net shutdown save
[root@z-dig redis]# cp conf/redis.conf conf/redis-1.conf
[root@z-dig redis]# grep -Ev '#|^$' conf/redis-1.conf
daemonize yes
pidfile /var/run/redis-1.pid
port 16379
tcp-backlog 511
bind 127.0.0.1
timeout 0
tcp-keepalive 0
loglevel warning
logfile "/var/log/redis-1.log"
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump-1.rdb
dir ./
slaveof 127.0.0.1 6379
masterauth www.111cn.net
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
requirepass www.111cn.net
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@z-dig redis]#
  启动两个实例

[root@z-dig redis]# /usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf
[root@z-dig redis]# /usr/local/redis/bin/redis-server /usr/local/redis/conf/redis-1.conf
[root@z-dig redis]# lsof -i:6379
COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
redis-ser 20930 root    4u  IPv4 145992      0t0  TCP localhost:6379 (LISTEN)
redis-ser 20930 root    5u  IPv4 146031      0t0  TCP localhost:6379->localhost:39445 (ESTABLISHED)
redis-ser 20938 root    5u  IPv4 146029      0t0  TCP localhost:39445->localhost:6379 (ESTABLISHED)
[root@z-dig redis]# lsof -i:16379
COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
redis-ser 20938 root    4u  IPv4 146024      0t0  TCP localhost:16379 (LISTEN)
[root@z-dig redis]#
[root@z-dig redis]# redis-cli -h 127.0.0.1 -p 6379 -a www.111cn.net get name
"mr.zhou"
[root@z-dig redis]# redis-cli -h 127.0.0.1 -p 16379 -a www.111cn.net get name
"mr.zhou"
[root@z-dig redis]#
  测试主从

[root@z-dig redis]# redis-cli -h 127.0.0.1 -p 6379 -a www.111cn.net info replication
# Replication
role:master
connected_slaves:1
slave0:ip=127.0.0.1,port=16379,state=online,offset=337,lag=1
master_repl_offset:337
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:336
[root@z-dig redis]#

[root@z-dig redis]# redis-cli -h 127.0.0.1 -p 16379 -a www.111cn.net info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6379
master_link_status:up
master_last_io_seconds_ago:9
master_sync_in_progress:0
slave_repl_offset:351
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
[root@z-dig redis]#
[root@z-dig redis]# redis-cli -h 127.0.0.1 -p 16379 -a www.111cn.net get age
(nil)
[root@z-dig redis]#

[root@z-dig redis]# redis-cli -h 127.0.0.1 -p 16379 -a www.111cn.net set age 23
(error) READONLY You can't write against a read only slave.
[root@z-dig redis]#

[root@z-dig redis]# redis-cli -h 127.0.0.1 -p 6379 -a www.111cn.net get age
(nil)
[root@z-dig redis]#

[root@z-dig redis]# redis-cli -h 127.0.0.1 -p 6379 -a www.111cn.net set age 23
OK
[root@z-dig redis]#

[root@z-dig redis]# redis-cli -h 127.0.0.1 -p 16379 -a www.111cn.net get age
"23"
[root@z-dig redis]#
  多实例主从已配置完成,并测试成功。配置过程中需要注意各实例的端口、PID文件、dump 文件不能相同。若配置了密码访问,则应注意从实例中进行相应的密码配置。从库是否只读等。

  配置文件中还有很多高级配置项,可以进行调优配置,并组成Redis集群。RDB、AOF可根据实际的情况进行配置。后期会进行介绍。

时间: 2024-09-25 05:39:01

linux中Redis 安装 及 主从配置教程的相关文章

Linux系统中MongoDB安装及主从配置

MongoDB 安?,主从配置 一 MongoDB 安装  代码如下 复制代码 [root@zabbix_server src]# wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.0.0.tgz [root@zabbix_server src]# tar xzvf mongodb-linux-x86_64-2.0.0.tgz [root@zabbix_server src]# mv mongodb-linux-x86_64-

linux中redis安装配置

redis是非关系型数据库.Nosql的一个开源项目.对于简单的键值存储,在复制严重落后的非常高速的访问场景中可以使用redis替代mysql. redis安装如下. 1.下载安装包,下载地址是servicestack.如我下载的版本是redis-2.0.2.rar. 2.解压文件到相应目录.可以看到解压后内有文件: 3.其中配置文件需要自己创建,现将源代码附在下面:  代码如下 复制代码 # Redis configuration file example    # By default Re

Redis安装及主从配置

一.何为Redis redis是一个key-value存储系统.和Memcached类似,它 支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合)和zset(有序集合).这些数据类型都支持 push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的.在此基础上,redis支持各种不同方式的排序. 与memcached一样,为了保证效率,数据都是缓存在内存中.区别的是redis会周期性的把更新的数据写入磁盘或者把修改操

Redis 安装及主从配置的步骤详解

Redis是一个开源.支持网络.基于内存.键值对存储数据库.与其他非关系型数据库主要不同在于,Redis中值的类型不仅限于字符串(Strings),还支持如下抽象数据类型:(列表)Lists.(集合)Sets.(有序集合)Sorted sets .(哈希)Hashes.Redis 通过 RDB.AOF 两种方式来实现数据的持久化.   安装Redis   Redis 源码包保存路径 /usr/local/src   Redis 软件安装路径 /usr/local/redis   编译 Redis

linux中mongodb安装和启动配置介绍

1.下载安装包 wget http://fastdl.mongodb.org/linux/mongodb-linux-i686-1.8.2.tgz 下载完成后解压缩压缩包 tar zxf mongodb-linux-i686-1.8.2.tgz 2. 安装准备 将mongodb移动到/usr/local/server/mongdb文件夹 mv mongodb-linux-i686-1.4.4 /usr/local/mongodb 创建数据库文件夹与日志文件 mkdir /usr/local/mo

linux中inotify+rsync实时同步配置教程

背景 我们公司在用inotify+rsync做实时同步,来解决分布式集群文件一致性的问题.但当web文件越来越多(百万级数量html,jpg等小 文件),同步就越来越慢,根本做不到实时,按照网上的调优方法都尝试过,问题根本没有解决.经过我一翻细致研究,终于把慢的核心问题研究明白,先总结一句 inotifywait响应不会有延迟,rsync也很快.大家同样有慢的烦恼,那是因为网上的inotify+rsync的教程都是坑.下面我们来分 析. inotifywait 单独分析 /usr/local/b

linux中squid stunnel代理服务器安装配置教程

代理服务器,就不用介绍了,简单说一下安装过程.开始的时候在hosting24上面,安装,怎么安装都没有成功,换成linode,半个小时就搞定了,猜测hosting24对代理做了限制. 一,服务器说明 一台国外的vps(推荐linode),服务端squid 一台公司内部的PC机,能访问外网就行,客户端stunnel 要达到的目的,公司内部人员,连接公司内部的pc机,通过stunnel通道连接远端squid,上外网查资料,谷歌,众里寻你千百度,蓦然回首你却在高墙外头.唉. 二,服务端安装squid

Linux中开机自动启动oracle的配置教程

1.如何在Linux启动时自动启动Oracle监听和实例 修改/etc/oratab文件,命令如下: [oracle@oracle11g ~]$ vi /etc/oratab 找到:accp:/u01/oracle:N 修改为: accp:/u01/oracle:Y 第二步:把lsnrctl start和dbstart添加到rc.local文件中,命令如下: [oracle@oracle11g ~]$ vi /etc/rc.d/rc.local 添加: su oracle -lc "/u01/o

linux中Apache更Nginx环境配置教程

想把Apache2.2换Nginx已经有些日子,今天给动手了.找了个稳定版本:1.4.1  http://nginx.org/download/nginx-1.4.1.zip 配置很简单,就是nginx跟php-cgi的进程管理有点子麻烦. 但是,只要会点bat,也是很简单的事情.贴一下自己的两个管理nginx.php-cgi的bat文件. 1. start_nginx_php-cgi.bat    代码如下 复制代码     @echo off     echo Starting PHP Fa