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

    -

  • 相关阅读:
    boost库学习笔记
    boost::bind时候注意性能问题
    Boost线程库学习笔记
    查看linux硬件信息大全
    WPF选择.NET Framework 4 Client Profile提示找不到名字空间
    实战第一个云程序(转)
    ASP.NET那点不为人知的事(一)
    win7中删除桌面删不掉的IE图标方法
    3D打印机(3D Printers)
    360把加壳的程序都报木马
  • 原文地址:https://www.cnblogs.com/firstForEver/p/5121505.html
Copyright © 2020-2023  润新知