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,分别返回值是:

-

原文地址:https://www.cnblogs.com/firstForEver/p/5121505.html