Redis安装
1, 下载:
TCL 8.5:
REDIS:
2, 安装
首先安装tcl8.5:
tar -zxvf tcl8.6.1-src.tar.gz
cd tcl8.6.1/unix
./configure
make && make install
再安装redis:
tar -zxvf redis-2.6.16.tar.gz
cd redis-2.6.16
make
make test
make install
3,简单配置:
在运行redis前,我们要配置一下。redis的配置文件在你的安装目录里。名为:redis.conf。
简单说几点redis.conf:
redis默认不是用守护进程的,如果需要更改,把daemonize no改成daemonize yes。(测试的时候可以不改,看看打印信息。)
如果对redis默认6379端口不爽的,可以更改port 6379
如果想把数据文件放到一个指定文件夹,更改dir /opt/data/
默认是dir ./ 也就是默认放到安装目录下。
dir 是数据文件路径。默认在安装目录下。
*下面的配置二选一,详见本文注释部分2。
###### SNAPSHOTTING ######内存快照方式:
默认的内存快照策略是,
在900秒(15分钟)内,至少有1次数据变更;
或者300秒内,有至少10次数据变更;
或者60秒内,有至少1000次数据变更;时间+数据变更次数,共同影响内存快照的出现。
###### APPEND ONLY MODE ###### AOF方式
appendfsync everysec 每秒同步。这里可以注释掉,打开下面的选项appendfsync no
其余的配置,conf里面的注释写的挺清楚,我就不多废话了。大家看着自己配就行了。
下面是redis.conf的主要配置参数的意义:
daemonize:是否以后台daemon方式运行
pidfile:pid文件位置
port:监听的端口号
timeout:请求超时时间
loglevel:log信息级别
logfile:log文件位置
databases:开启数据库的数量
save * *:保存快照的频率,第一个*表示多长时间,第三个*表示执行多少次写操作。在一定时间内执行一定数量的写操作时,自动保存快照。可设置多个条件。
rdbcompression:是否使用压缩
dbfilename:数据快照文件名(只是文件名,不包括目录)
dir:数据快照的保存目录(这个是目录)
appendonly:是否开启appendonlylog,开启的话每次写操作会记一条log,这会提高数据抗风险能力,但影响效率。
appendfsync:appendonlylog如何同步到磁盘(三个选项,分别是每次写都强制调用fsync、每秒启用一次fsync、不调用fsync等待系统自己同步)
这时你可以打开一个终端进行测试了,配置文件中默认的监听端口是6379
4, 启动redis
在安装目录下# cd src
#./redis-server ./../redis.conf附注:
2.0.4以前的老版本,运行很简单,在安装目录下:
#./redis-server
也可以把相关命令拷贝到 /usr/bin下来运行.
# cd redis-stable
# cp redis.conf /etc/redis.conf
# redis-server /etc/redis.conf
5, 关闭redis
# redis-cli shutdown //关闭所有关闭某个端口上的redis
# redis-cli -p 6397 shutdown //关闭6397端口的redis说明:关闭以后缓存数据会自动dump到硬盘上,硬盘地址见redis.conf中的dbfilename dump.rdb
6.测试
# redis-cli
redis> set name songbin
OK
redis> get name
"songbin"
7, redis开机自动启动
用这个脚本管理之前,需要先配置下面的内核参数,否则Redis脚本在重启或停止redis时,将会报错,并且不能自动在停止服务前同步数据到磁盘上:
# vi /etc/sysctl.conf
vm.overcommit_memory = 1
然后应用生效:
# sysctl –p
建立redis启动脚本:
# vim /etc/init.d/redis
# vim /etc/init.d/redis
#!/bin/bash
#
# Init file for redis
#
# chkconfig: - 80 12
# description: redis daemon
#
# processname: redis
# config: /etc/redis.conf
# pidfile: /var/run/redis.pid
source /etc/init.d/functions
#BIN="/usr/local/bin"
BIN="/usr/local/bin"
CONFIG="/etc/redis.conf"
PIDFILE="/var/run/redis.pid"
### Read configuration
[ -r "$SYSCONFIG" ] && source "$SYSCONFIG"
RETVAL=0
prog="redis-server"
desc="Redis Server"
start() {
if [ -e $PIDFILE ];then
echo "$desc already running...."
exit 1
fi
echo -n $"Starting $desc: "
daemon $BIN/$prog $CONFIG
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
return $RETVAL
}
stop() {
echo -n $"Stop $desc: "
killproc $prog
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog $PIDFILE
return $RETVAL
}
restart() {
stop
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
condrestart)
[ -e /var/lock/subsys/$prog ] && restart
RETVAL=$?
;;
status)
status $prog
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart|condrestart|status}"
RETVAL=1
esac
exit $RETVAL
# chmod 755 /etc/init.d/redis
# chkconfig --add redis
# chkconfig --level 345 redis on
# chkconfig --list redis
注释:
▲redis的默认端口号是6379,(据redis的作者antirez的博文说,6379在是手机按键上MERZ对应的号码,而MERZ取自意大利歌女Alessia Merz的名字。而MERZ长期以来被antirez及其朋友当作愚蠢的代名词。)
▲Redis有两种存储方式,默认是snapshot方式,实现方法是定时将内存的快照(snapshot)持久化到硬盘,这种方法缺点是持久化之后如果出现crash则会丢失一段数据。因此在完美主义者的推动下作者增加了aof方式。aof即append only mode,在写入内存数据的同时将操作命令保存到日志文件。
PHP-redis扩展安装
1, 下载:
2, 安装
tar -zxvf redis-2.2.4.tgz3,修改php.ini
cd redis-2.2.4
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/
/php-config
make && make install
extension=redis.so
4. 重启php
kill `cat /var/run/php-fpm.pid ` && /usr/local/php/sbin/php-fpm
使用phpRedisAdmin 管理redis
git clone https://github.com/ErikDubbelboer/phpRedisAdmin.git移至一个可以访问的目录就可以管理了!(如果出错看看是否关闭了selinux )
cd phpRedisAdmin
git clone https://github.com/nrk/predis.git vendor
常用命令
redis的常用命令主要分为两个方面、一个是键值相关命令、一个是服务器相关命令
1、键值相关命令
keys * 取出当前所有的key
exists name 查看n是否有name这个key
del name 删除key name
expire confirm 100 设置confirm这个key100秒过期
ttl confirm 获取confirm 这个key的有效时长
select 0 选择到0数据库 redis默认的数据库是0~15一共16个数据库
move confirm 1 将当前数据库中的key移动到其他的数据库中,这里就是把confire这个key从当前数据库中移动到1中
persist confirm 移除confirm这个key的过期时间
randomkey 随机返回数据库里面的一个key
rename key2 key3 重命名key2 为key3
type key2 返回key的数据类型
2、服务器相关命令
ping PONG返回响应是否连接成功
echo 在命令行打印一些内容
select 0~15 编号的数据库
quit /exit 退出客户端
dbsize 返回当前数据库中所有key的数量
info 返回redis的相关信息
config get dir/* 实时传储收到的请求
flushdb 删除当前选择数据库中的所有key
flushall 删除所有数据库中的数据库