redis的使用,相比memcached
redis支持数据持久化,不像memcached断电或者重启就丢失数据了。
支持持久化主要有两种方式,在redis.conf配置文件里配置。
1. 使用.rdb格式存储,配置save参数(save N M表示在N秒之内,redis至少发生M次修改则redis抓快照到磁盘。超过一定修改频率,则采用快照方式备份),默认是这一种模式
2. 使用.aof格式存储,配置appendonly yes(redis每执行一个修改数据的命令,都会把它添加到aof文件中,当redis重启时,将会读取AOF文件进行“重放”以恢复到 redis关闭前的最后时刻。这种方式更安全,但会慢一些)。
实际上这两种持久化模式可以同时打开,但比较建议是用aof这个,配置文件默认是rdb这个。
redis相比mem还支持更多的存储结构。比如支持list、set、hash、zset等。
list模仿链表这样的数据结构,有lPush、rPush、lrange这些方法啥的。lpush是从左边添加,后添加的在前边,类似于栈结构。rpush是从右边添加,先添加的在前边。
下载安装redis,官网地址:http://redis.io/download;
下载安装php-redis,参考地址:http://www.runoob.com/redis/redis-php.html
比如:
启动redis服务
# ./redis-server redis.conf
进入客户端
# ./redis-cli
> lpush key val1
> lpush key val1
> lpush key val2
> lrange key 0 -1 #查看一下
这样就是val2在第一位置。值得注意的是,list结构允许相同的值在一起,比如两个val1。这与set结构不同,set只允许相同的值出现一次。
和mem相同的是,set进一个不是字符串类型值的时候,还是要把这个结构序列化才行,然后取得的时候也要反序列化。
redis支持很多种编程语言去操作,这些编程语言操作redis的客户端。各自语言封装了各自的操作方法。
其它的东西就看下操作手册即可,地址:http://redisdoc.com/。
这几篇文章也不错,
http://blog.51yip.com/cache/1439.html
http://blog.51yip.com/cache/1440.html
http://blog.csdn.net/zhiguozhu/article/details/50517527
几个简单的php操作redis的示例:
<?php //连接本地的 Redis 服务 $redis = new Redis(); $redis->connect('127.0.0.1', 6379); echo "Connection to server sucessfully",'<br/>'; //查看服务是否运行 $arr = array( 'a' => '中文', 'b' => 'ddd2', 'c' => 'aaa3', ); $redis->set('key0', json_encode($arr)); $redis->set('key1', serialize($arr)); $key0 = $redis->get('key0'); var_dump(json_decode($key0, true)); echo '<br/>'; $key1 = $redis->get('key1'); var_dump(unserialize($key1)); // 模拟队列, lpush表示从左边开始推进去,那么后放进去的就在队列头 $redis->lpush("list0", 'test1'); $redis->lpush("list0", "test2"); $redis->lpush("list0", "test3"); $redis->lpush("list0", "test4"); $redis->lpush("list0", "test5");// 在队列头 $redis->lpush("list0", "test5");// 在队列头 // start end下标 $list1 = $redis->lRange('list0', 0, 5); $list2 = $redis->lRange('list0', -3, -2);// test3 test2 echo '<br/>'; print_r($list1); echo '<br/>'; print_r($list2); // hash表类型 $redis->hset('table1','field1','aaa111'); $redis->hset('table1','field2','bbb222'); echo '<br/>'; $re = $redis->hget('table1', 'field1');// aaa111 print_r($re); // 无序集合 $redis->sadd('skey','vv0'); $redis->sadd('skey','vv0'); $redis->sadd('skey','vv1'); $redis->sadd('skey','vv11'); $redis->sadd('skey','vv111'); echo '<br/>'; // 相同value只取一个,区别于队列模拟 $re = $redis->smembers('skey');// Array ( [0] => vv111 [1] => vv0 [2] => vv1 [3] => vv11 ) print_r($re);
php操作redis的方法名和在redis客户端操作的方法几乎一样,也就很方便查看手册。几种redis支持的数据结构下的操作。
http://redisdoc.com/index.html
php查看redis某个key的数据类型时,利用$redis->type('key');
其中有几种情况key不存在、string、set、list、zset、hash,分别返回值是:
-