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
若出现检测不提示如下
就需要安装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
常用配置:
- daemonize:是否是守护进程(no|yes),改为yes
- port:Redis对外端口号,默认6379,需要启动多个redis,只需要修改成不同端口。
- logfile:Redis系统日志,查看控制台打印的日志。
- requirepass:Redis连接密码,如修改成requirepass 123456。
- maxmemory:可以分配的最大内存,配置大小要小于物理内存,留有足够的内存供系统使用,防止数据暴涨,导致内存吃紧,SWAP加剧,直接宕机。如改成maxmemory 512mb。
- 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
2、添加key为a,value为b的字符串
redis> set a b
3、获取key为a的字符串value
redis> get a
4、整数k自增1
redis> incr k
5、同时获取多个key的value
redis> mget a i k
6、查看redis保存着多少个键值对
redis> dbsize
7、清空所有Redis保存的键值对
redis> flushall
8、查看当前的redis连接数
redis> info clients
9、查询redis允许的最大连接数
redis> config get maxclients