linux php中使用redis,linux下,PHP操作redis及redis、php-redis的安装

redis相关文档、手册、blog:

php-redis下载:https://github.com/phpredis/phpredis;github里也有phpredis的说明和redis的语法介绍

redis中文手册:http://redisdoc.com

php操作redis说明博客:作者:春哥也编程,http://www.cnblogs.com/zcy_soft/archive/2012/09/21/2697006.html

1、安装redis# wget http://download.redis.io/releases/redis-2.8.6.tar.gz

# tar -zxvf redis-2.8.6.tar.gz

# cd redis-2.8.6

# make

# cd src && make all

如果安装出现以下错误:

make[1]: Entering directory `/root/xc/redis-2.6.14/src'

LINK redis-server

zmalloc.o: In function `zmalloc_used_memory':

/root/xc/redis-2.6.14/src/zmalloc.c:223: undefined reference to `__sync_add_and_fetch_4'

collect2: ld 返回 1

make[1]: *** [redis-server] 错误 1

make[1]: Leaving directory `/root/xc/redis-2.6.14/src'

make: *** [all] 错误 2

则说明平台不兼容:则使用,如果没有出现那当然好了:# make CFLAGS="-march=i686"

到此编译完成

#建立一个redis的工作目录# mkdir -pv /usr/local/webserver/redis

redis的相关配置

# 进入到解压redis软件的src目录下,拷贝redis的命令至你的工作目录# cd src/

# cp redis-cli redis-server redis-sentinel redis-benchmark redis-check-aof redis-check-dump /usr/local/webserver/redis/

#回到上一级目录,拷贝redis的配置文件redis.conf# cd ../# cp redis.conf /usr/local/webserver/redis/# 启动redis服务

# vim redis.conf

daemonize yes     ##开启后台运行

##添加到redis系统服务并配置开机启动# cd utils/

# ./install_server.sh

其他的默认,这个填上redis-server的路径:

Please select the redis executable path [] /usr/local/webserver/redis/redis-server

出现这个说明成功:Installation successful!

# cd /etc/init.d/

# mv redis_6379 redis

这样就可以用这样的方式启动reids了,而不用进入到工作目录./redis-server redis.conf了

只需,service redis start|restart|stop)就可启动redis了

但还差一步,清空redis脚本的内容,把下面这个脚本写入,之后就可以用service redis start启动redis了

# vim redis#!/bin/sh

#chkconfig: 345 86 14

#description: Startup and shutdown script for Redis

PROGDIR=/usr/local/webserver/redis        ##这个是你redis工作目录的路径

PROGNAME=redis-server

DAEMON=$PROGDIR/$PROGNAME

CONFIG=/usr/local/webserver/redis/redis.conf

PIDFILE=/var/run/redis.pid

DESC="redis daemon"

SCRIPTNAME=/etc/rc.d/init.d/redisd

start()

{

if test -x $DAEMON

then

echo -e "Starting $DESC: $PROGNAME"

if $DAEMON $CONFIG

then

echo -e "OK"

else

echo -e "failed"

fi

else

echo -e "Couldn't find Redis Server ($DAEMON)"

fi

}

stop()

{

if test -e $PIDFILE

then

echo -e "Stopping $DESC: $PROGNAME"

if kill `cat $PIDFILE`

then

echo -e "OK"

else

echo -e "failed"

fi

else

echo -e "No Redis Server ($DAEMON) running"

fi

}

restart()

{

echo -e "Restarting $DESC: $PROGNAME"

stop

start

}

list()

{

ps aux | grep $PROGNAME

}

case $1 in

start)

start

;;

stop)

stop

;;

restart)

restart

;;

list)

list

;;

*)

echo "Usage: $SCRIPTNAME {start|stop|restart|list}" >&2

exit 1

;;

esac

exit 0

启动redis:service redis start

2、安装httpd# yum -y install httpd

3、安装php# yum -y install php

4、安装php-devel# yum -y install php-devel

5、安装php-redis

#安装前,安装phpsize,phpsize是php的程序,在你php的安装目录的bin目录下,执行即可

# phpsize

# ./configure [--enable-redis-igbinary]

#  make && make install

---安装完成----

Build complete.

Don't forget to run 'make test'.

Installing shared extensions:     /usr/lib64/php/modules/

---------------

添加redis模块:vim php.ini

extension=redis.so

重启apache服务器

service httpd restart

测试:cd /var/www/html

vim redis.php

$redis = new Redis();

$redis->connect('127.0.0.1',6379);

$redis->set('site','xcroom');

echo 'name is:' . $redis->get('site'),'
';

echo 'xcroom';

?>

打开浏览器:

------------

name is:xcroom

xcroom

------------

测试成功

php操作redis的相关函数:

1、实例化redis类

$redis = new Redis();

2、open,connect

host: string. can be a host, or the path to a unix domain socket(主机)

port: int, optional(端口)

timeout: float, value in seconds (optional, default is 0 meaning unlimited)(连接超时断开的时间)

实例:

$redis->connect('127.0.0.1', 6379);

$redis->connect('127.0.0.1'); // port 6379 by default

$redis->connect('127.0.0.1', 6379, 2.5); // 2.5 sec timeout.

$redis->connect('/tmp/redis.sock'); // unix domain socket.

$redis->connect('127.0.0.1', 6379, 1, NULL, 100); // 1 sec timeout, 100ms delay between reconnection attempts.

3、pconnect, popen,长连接

4、auth

$redis->auth('foobared');

5、select,切换数据库

$redis->select(0);  // switch to DB 0

6、close

7、setOption 设置redis模式 ,Set client option.

8、getOption 查看redis设置的模式

9、ping #Check the current connection status

$redis = new Redis();

$redis->connect('127.0.0.1');

$va = array('val1'=>'hello','val2'=>'xcroom');

$redis->mset($va);

$v = array('val1','val2');

var_dump($redis->mget($v));

10、事务,multi进入事务状态,exec提交

127.0.0.1:6379> multi

OK

127.0.0.1:6379> set pname jiangxi

QUEUED

127.0.0.1:6379> set pcity nancheng

QUEUED

127.0.0.1:6379> get pname

QUEUED

127.0.0.1:6379> get pcity

QUEUED

127.0.0.1:6379> exec

1) OK

2) OK

3) "jiangxi"

4) "nancheng"

php操作事务:

$redis = new Redis();

if($redis->connect('127.0.0.1')){

echo 'connect successfully','
';

}

echo 'a';

$ret = $redis->multi()

->set('a','aaaa')

->set('b','bbbb')

->get('a')

->get('b')

->exec();

var_dump($ret);

~   ?>

结果:

connect successfully

array(4) {

[0]=>

bool(true)

[1]=>

bool(true)

[2]=>

string(4) "aaaa"

[3]=>

string(4) "bbbb"

}

11、watch, unwatch  监测一个key的值是否被其它的程序更改。

$redis = new Redis();

$redis->connect('127.0.0.1',6379);

$redis->watch('x');

$arr = array('val','keys');

$redis->watch($arr);

$ret = $redis->multi()

->incr(x)

->exec();

var_dump($ret);

?>

12、publish * 发表内容到某一个通道。注意,该方法可能在未来里发生改变(发布)

publish chanel2 "hello" 发布一个内容

subscribe * 方法回调。注意,该方法可能在未来里发生改变 (订阅)

subscribe chanel2

13、incr, incrBy key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值

例子:

$redis = new Redis();

$redis->connect('127.0.0.1');

$redis->set('a',18);

$a = $redis->get('a');

echo $a,'
';

echo $redis->incrby($a,10); #每刷新一次值自增一

13、sdiff、sdiffstore,求差集

127.0.0.1:6379> sdiff key1 key2

1) "a"

2) "d"

127.0.0.1:6379> sdiffstore key1 key2

(integer) 2

127.0.0.1:6379> smembers key1

1) "b"

2) "c"

127.0.0.1:6379> smembers key2

1) "b"

2) "c"

14、sinter、sinterstore,求交集

127.0.0.1:6379> smembers key1

1) "a"

2) "b"

3) "c"

127.0.0.1:6379> smembers key2

1) "b"

2) "c"

127.0.0.1:6379> sinter key1 key2

1) "b"

2) "c"

15、sunion,sunionstore,求并集

127.0.0.1:6379> smembers key1

1) "a"

2) "b"

3) "c"

127.0.0.1:6379> smembers key2

1) "b"

2) "c"

127.0.0.1:6379> sinter key1 key2

1) "a"

2) "b"

3) "c"

16、sMembers, sGetMembers 返回名称为key的set的所有元素

17、zAdd(key, score,member):向名称为key的zset中添加元素member,score用亍排序。如果该元素已经存在,

则根据score更新该元素的顺序。

zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中

的index从start到end的所有元素

$redis = new Redis();

$redis->connect('127.0.0.1');

echo 'a';

$redis->zadd('love',1,'a');

$redis->zadd('love',4,'b');

$redis->zadd('love',3,'c');

var_dump($redis->zrange('love',0,-1));

18、zcount:

$redis->zCount(key, star, end);

返回名称为key的zset中score >= star且score <= end的所有元素的个数,score为用于排序的数字

echo $redis->zcount('love',1,4);

19、zrank、zrevrank

$redis->zadd('love',1,'a');

$redis->zadd('love',4,'b');

$redis->zadd('love',3,'c');

echo $redis->zrank('love','c');

echo $redis->zrevrank('love','b');

返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序 zIncrBy $redis->

redis 操作相关

flushDB 清空当前数据库

flushAll 清空所有数据库

randomKey 随机返回key空间的一个key

$key = $redis->randomKey();

select 选择一个数据库

move 转移一个key到另外一个数据库

$redis->select(0); // switch to DB 0

$redis->set('x', '42'); // write 42 to x

$redis->move('x', 1); // move to DB 1

$redis->select(1); // switch to DB 1

rename, renameKey 给key重命名

renameNx 不remane类似,但是,如果重新命名的名字已经存在,不会替换成功

setTimeout, expire 设定一个key的活劢时间(s)

$redis->setTimeout('x', 3);

expireAt key存活到一个unix时间戳时间

$redis->expireAt('x', time() + 3);

dbSize 查看现在数据库有多少key

$count = $redis->dbSize();

auth 密码认证

$redis->auth('foobared');

bgrewriteaof 使用aof来进行数据库持久化

$redis->bgrewriteaof();

slaveof 选择从服务器

$redis->slaveof('10.0.1.7', 6379);

save 将数据同步保存到磁盘

bgsave 将数据异步保存到磁盘

lastSave 返回上次成功将数据保存到磁盘的Unix时戳

info 返回redis的版本信息等详情

type 返回key的类型值

string: Redis::REDIS_STRING

set: Redis::REDIS_SET

list: Redis::REDIS_LIST

zset: Redis::REDIS_ZSET

hash: Redis::REDIS_HASH

other: Redis::REDIS_NOT_FOUND

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值