在Linux中安装Redis-3.2.3

  Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。项目需要用来存储经常变化的持久化数据和共享集群服务器中的web session。现在在CentOS 7.2中安装Redis-3.2.3。

下载&解压

查看最新版下载地址:http://download.redis.io/releases/

# cd /usr/local
# wget http://download.redis.io/releases/redis-3.2.3.tar.gz
# tar zxvf redis-3.2.3.tar.gz  

安装

# cd /usr/local/redis-3.2.3
# make

make之后,我们会得到src目录下的可执行文件:
  redis-server:Redis服务器的daemon启动程序
  redis-cli:Redis命令行操作工具。或者通过telnet进行纯文本协议操作
  redis-benchmark:Redis性能测试工具,测试Redis在你的系统及你的配置下的读写性能
 
make完成之后,有个提示可以make test检测是否安装正确,可以执行以下:

# make test

若出现检测不提示如下
make error
就需要安装tcl,安装方法:

wget http://downloads.sourceforge.net/tcl/tcl8.6.0-src.tar.gz
tar xzvf tcl8.6.1-src.tar.gz 
cd tcl8.6.0/

cd unix &&
./configure --prefix=/usr \
            --mandir=/usr/share/man \
            --without-tzdata \
            $([ $(uname -m) = x86_64 ] && echo --enable-64bit) &&
make &&

sed -e "s@^\(TCL_SRC_DIR='\).*@\1/usr/include'@" \
    -e "/TCL_B/s@='\(-L\)\?.*unix@='\1/usr/lib@" \
    -i tclConfig.sh

make install &&
make install-private-headers &&
ln -v -sf tclsh8.6 /usr/bin/tclsh &&
chmod -v 755 /usr/lib/libtcl8.6.so

还有种另外方法,参考链接:http://blog.csdn.net/luyee2010/article/details/18766911
 
make test检测正确后再执行make install,貌似我需要的可执行文件,安装到了/usr/local/bin:

# cd /usr/local/redis-3.2.3
# make install

配置

1、复制配置文件,因为一台服务器可能需要启动多个redis,所以把配置文件复制到conf目录下,按照端口命名配置文件,启动多个只要修改不同端口号。

# cd /usr/local/redis-3.2.3
# mkdir ./conf
# cp redis.conf ./conf/redis-6379.conf

2、修改Redis配置。

# vi conf/redis-6379.conf 

常用配置:

  1. daemonize:是否是守护进程(no|yes),改为yes
  2. port:Redis对外端口号,默认6379,需要启动多个redis,只需要修改成不同端口。
  3. logfile:Redis系统日志,查看控制台打印的日志。
  4. requirepass:Redis连接密码,如修改成requirepass 123456。
  5. maxmemory:可以分配的最大内存,配置大小要小于物理内存,留有足够的内存供系统使用,防止数据暴涨,导致内存吃紧,SWAP加剧,直接宕机。如改成maxmemory 512mb。
  6. save 60 1000 #当时间间隔超过60秒,或存储超过1000条记录时,进行持久化。

更多配置:

  • daemonize:是否以后台daemon(守护进程)方式运行
  • pidfile:pid文件位置
  • port:监听的端口号
  • timeout:请求超时时间
  • loglevel:log信息级别
  • logfile:log文件位置(绝对路径)
  • databases:开启数据库的数量
  • save :保存快照的频率,第一个表示多长时间(秒级),第三个表示执行多少次写操作。在一定时间内执行一定数量的写操作时,自动保存快照。可设置多个条件。
  • rdbcompression:是否使用压缩
  • dbfilename:数据快照文件名(只是文件名,不包括目录)
  • dir:数据快照的保存目录(这个是目录)
  • appendonly:是否开启appendonlylog,开启的话每次写操作会记一条log,这会提高数据抗风险能力,但影响效率。
  • appendfsync:appendonlylog如何同步到磁盘(三个选项,分别是每次写都强制调用fsync、每秒启用一次fsync、不调用fsync等待系统自己同步)
  • slaveof :主从配置,在redis-slave上配置master的ip port,即可。

3、查看Redis配置,去除了注释行和空行。

# cat conf/redis-6379.conf | grep -v ‘#’ | grep -v ‘^$’

调优

1、/etc/sysctl.conf
前面启动Redis时,看到如下警告:

[1958] 13 Aug 16:18:24 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add ‘vm.overcommit_memory = 1’ to /etc/sysctl.conf and then reboot or run the command ‘sysctl vm.overcommit_memory=1’ for this to take effect.

需要修改/etc/sysctl.conf文件:

# vim /etc/sysctl.conf  

打开后再末尾追加:

vm.overcommit_memory = 1

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

# sysctl vm.overcommit_memory=1  

2、/proc/sys/vm/overcommit_memory
为了调整内存分配策略,需要配置/proc/sys/vm/overcommit_memory

  • 0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
  • 1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
  • 2, 表示内核允许分配超过所有物理内存和交换空间总和的内存

默认为0,如果内存情况比较紧张的话,设为1:

# echo 1 > /proc/sys/vm/overcommit_memory  

运行&关闭

1、运行Redis

# redis-server /usr/local/redis-3.2.3/conf/redis-6379.conf 

2、关闭Redis
  四种关闭操作,其中shutdown默认持久化后退出,shutdown save为显式持久化后退出,shutdown nosave为不持久化退出:

# redis-cli shutdown  //默认关闭host:127.0.0.1 端口:6379的Redis
# redis-cli -h 127.0.0.1 -a 123456 shutdown //关闭host:127.0.0.1 默认端口:6379 密码:123456 的Redis
# redis-cli -p 6378 -a 123456 shutdown  //关闭默认host:127.0.0.1 端口:6378的Redis 密码:123456 的Redis
# redis-cli -h 127.0.0.1 -p 6379 -a 123456 shutdown //关闭host:127.0。0.1,端口:6379 的Redis 密码:123456 的Redis

测试

1、通过客户端命令redis-cli访问Redis:

# redis-cli  
# redis> set name jstar
OK  
# redis> get name   
"jstar" 

2、进行Redis性能测试:

# redis-benchmark -l  

这个测试会一直进行下去,直到你按Ctrl+C。

redis-cli常用命令

1、客户端命令redis-cli访问Redis

# redis-cli -h 127.0.0.1 -p 6379 -a 123456

redis-cli

2、添加key为a,value为b的字符串

redis> set a b 

redis-cli set

3、获取key为a的字符串value

redis> get a

get a

4、整数k自增1

redis> incr k

redis-cli incr

5、同时获取多个key的value

redis> mget a i k 

redis-cli mget

6、查看redis保存着多少个键值对

redis> dbsize

redis-cli dbsize

7、清空所有Redis保存的键值对

redis> flushall

redis-cli flushall

8、查看当前的redis连接数

redis> info clients

info clients

9、查询redis允许的最大连接数

redis> config get maxclients

config get maxclients

文章目录
  1. 1. 下载&解压
  2. 2. 安装
  3. 3. 配置
  4. 4. 调优
  5. 5. 运行&关闭
  6. 6. 测试
  7. 7. redis-cli常用命令