zoukankan      html  css  js  c++  java
  • [Redis]Redis安装和使用

    一、Redis安装

    Linux, MacOS系统安装

    1. 下载Redis

    http://download.redis.io/releases/

    2. 解压压缩包,在目录中执行make命令进行源码编译

    make

    3. 安装redis服务

    sudo make install

    4. 新建配置文件redis.conf

    参考源码中的redis.conf配置文件进行配置,修改daemonize(yes 后台运行) port(端口号 6379)

    Window系统安装

    Redis服务安装

    https://github.com/dmajkic/redis/downloads

    先下载redis安装包,在进行解压。将解压出来的x64或x86文件拷贝到某个目录中。

    然后在该目录中打开cmd。运行redis-server

    配置文件redis.conf中可以进行配置,在window平台上不能设置后台运行

    也就是 daemonize 只能设置为 no

    PHP扩展安装工具

    1. PECL (The PHP Extension Community Library) 打包安装的PHP扩展库仓库

        Redis扩展包下载网址提供两个   pecl.php.net

                windows.php.net/downloads/pecl/releases/

    2. 查看版本 PHP版本 系统平台版本32位/64位

          PHP Extension Build 在phpinfo()中查找

      比如我的电脑安装的是wamp, 在phpinfo()页面查找到 API20121212,TS,VC11  PHP版本5.5.12

          在windows.php.net网站上找到 php_redis-2.2.7-5.5-ts-vc11-x64.zip 文件进行下载

    3. 找到相应版本进行压缩包下载,解压后将php_redis.dll文件拷贝到指定目录

        C:wampinphpphp5.5.12ext

    4. 在php.ini配置文件中进行配置,加入如下语句

        extension=php_redis.dll

    5. 重启服务器

    二、Redis服务启动

    redis-server --help查看命令帮助文档

    redis-server [configfile] 启动服务

    配置文件configfile选用第一步创建的redis.conf文件路径

    使用ps aux|grep redis来查看当前启动的所有服务,找到是否有redis-server服务。可以查看服务主机名和端口号。

    三、Redis客户端连接

    redis-cli --help查看命令帮助文档

    redis-cli -h -p 连接到指定主机和指定端口

    info 连上redis之后查看系统信息

     四、Redis数据类型

    string, list, set, hash, sort set

    1. string

    通过get,set命令进行设置和读取

    数据结构key value

    string数据类型可以是整数,浮点数和字符串

    set string1 joyjoe
    get string1
    set string2 4
    get string2
    incr string2
    get string2
    incrby string2 5
    get string2
    decr string2 4
    get string2
    decr string2
    get string2

    针对整数可以采取以下命令,分别表示递增,递增的幅度,递减,递减的幅度

    incr key

    incrby key increment

    decr key

    decrby key decrementd

    2. list

    针对队列可以采取push和pop操作分别往list中推入数据和从list中取出数据

    lpush list1 "0001"
    lpush list1 20
    lpush list1 "JoyJoe"
    llen  list1
    rpop  list1
    rpop  list1
    rpop  list1 
    llen  list1

    push和pop操作都是有方向性的,分为lpush,rpush, lpop, rpop四个命令

    llen是用来查看list元素个数的命令

    3. set

    set是一个无重复数据的集合

    sadd key value 给集合添加值

    srem key value 从集合中删除值

    scard key 查看集合个数

    sismember key value 判断给定值是否在集合中  如果包含返回1,否则返回0

    由于整数,浮点数,字符串都是string类型,所以在set中,20和'20'是相同数据

    4. hash

    hset hash1 name 'joyjoe'
    hset hash1 age 20
    hset hash1 sex 'male'
    hset hash1 age 25
    hget hash1 age
    hmget hash1 name sex age
    hlen hash1

    hash数据结构的key是string类型

    hmget用于一次读取多个key的值

    5. sort set

    一个具有排名属性的集合,集合元素也是不能重复。具有相同排名分数的元素排列顺序按照字典序排列

    zadd zset1 [score] [value] 给某个排名集合中添加一个元素

    zrem zset1 [score]

    zcard zset1 查看集合中数据的个数

    zrange zset1 [start] [stop] [withscores] 显示集合中从start到stop之间的元素和排名,包含start和stop元素

    zrank zset1 [value] 查看某个元素在集合中的排名

    清空当前数据库中的所有数据

    flushdb

    五、PHP安装Redis扩展模块

     由于本人MAC电脑上使用的是XAMPP集成环境,所以安装过程如下

    1. 在pecl.php.net官方网站上下载压缩包

    2. 解压并进入目录,执行

    sudo /Applications/XAMPP/xamppfiles/bin/phpize

    3. 直接执行./configure 命令

    ./configure --with-php-config=/Applications/XAMPP/xamppfiles/bin/php-config

    4. 执行 sudo make && sudo make install

    安装完成之后,redis.so文件在目录 /Application/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20131226/

    5. 在xampp的php.ini文件中加入

    extension=redis.so

    6. 重新启动xampp

     六、PHP操作Redis的文档

    文档地址  github.com/phpredis/phpredis

    接下来直接上代码

    <?php
        $redis = new Redis(); //Redis类的命名空间是根
        $connect = $redis->connect("127.0.0.1", 6379);
        var_dump($connect);
    ?>

    1. 操作string

    <?php
        $redis = new Redis();
        $redis->connect("127.0.0.1", 6379);
        $redis->delete("string1");
        $redis->set("string1", "joyjoe");
        var_dump($redis->get("string1"));
        $redis->set("string1", 5);
        $redis->incr("string1", 5);
        var_dump($redis->get("string1"));
    ?>

    在PHPredis中,incr, incrby表示同一个命令,等价于redis.io中的incrby

    2. 操作list

    <?php
        $redis = new Redis();
        $redis->connect("127.0.0.1", 6379);
        $redis->delete("list1");
        $redis->lPush("list1", 12);
        $redis->lPush("list2", 13);
        $redis->lPush("list2", 14);
        $redis->lPushx("list3", 15);
        $redis->lPush("list2", 15);
        $redis->rPop("list2");
        $redis->lLen("list2");
    ?>

    lPushx操作表示当key存在时才进行推入值

    3. 操作set

    <?php
        $redis = new Redis();
        $redis->connect("127.0.0.1", 6379);
        $redis->delete("set1");
        $redis->sAdd("set1", 13);
        $redis->sAdd("set1","13");
        $redis->sAdd("set1", 14);
        var_dump($redis->sCard("set1"));
        var_dump($redis->sMembers("set1"));
    ?>

    4. 操作hash

    <?php
        $redis=new Redis();
        $redis->connect("127.0.0.1", 6379);
        $redis->delete("hash1");
        $redis->hSet("hash1", "name", 'joyjoe');
        $redis->hMSet("hash1", array('age' => '30', 'sex' => 'male'));
        $redis->hIncrBy("hash1", "age", "-10");
        var_dump($redis->hExists("hash1", "price")); //false
        var_dump($redis->hLen("hash1")); //int(3)
        var_dump($redis->hKeys("hash1")); // array("name","age","sex")
        var_dump($redis->hVals("hash1")); // array("joyjoe","20","male")
        var_dump($redis->hGetAll("hash1")); // array("name"=>"joyjoe","age"=>"20","sex"=>"male")
        var_dump($redis->hGet("hash1", "name")); // "joyjoe"
        var_dump($redis->hMGet("hash1", array("sex", "age", "price"))); // array("sex"=>"male", "age"=>"20", "price" => false)
    ?>

    5. 操作sort set

    <?php
        $redis = new Redis();
        $redis->connect("127.0.0.1", 6379);
        $redis->delete("zset1");
        $redis->zAdd("zset1", 1, "joyjoe");
        $redis->zAdd("zset1", 2, "bob");
        $redis->zAdd("zset1", 2.3, "mike");
        $redis->zAdd("zset1", 3.1, "mark");
        $redis->zAdd("zset1", 3.2, "lucy");
        var_dump($redis->zCard("zset1")); //int(5)
        var_dump($redis->zCount("zset1", 2, 3)); //int(2)
        var_dump($redis->zIncrBy("zset1", 2.5, 'zize')); //float(2.5)
        var_dump($redis->zIncrBy("zset1", -0.1, 'lucy')); //float(3)
        var_dump($redis->zCard("zset1")); //int(6)
        var_dump($redis->zCount("zset1", 2, 3)); //int(4)
        var_dump($redis->zScore("zset1", "lucy")); //float(3)
        var_dump($redis->zScore("zset1", "zize")); //float(2.5)
        var_dump($redis->zRange("zset1", 0, -1));
        var_dump($redis->zRange("zset1", 0, -1, true));
        var_dump($redis->zRevRange("zset1", 0, -1, true));
        var_dump($redis->zRange("zset1", -3, -2, true)); // array("zize"=>2.5, "lucy"=>3)
        var_dump($redis->zRange("zset1", 2, -4, true));  // array("mike"=>2.3)
        var_dump($redis->zRange("zset1", 3, -4, true));  // array(0)
        var_dump($redis->zRangeByScore("zset1", 1, 3));  // return data which score in range
        var_dump($redis->zRangeByScore("zset1", 1, 3, array("withscores"=>true)));
        var_dump($redis->zRevRangeByScore("zset1", 3, 1, array("withscores"=>true)));
        var_dump($redis->zRangeByScore("zset1", 1, 3, array("withscores"=>true, 'limit'=>array(1,2))));
    ?>
  • 相关阅读:
    python的垃圾回收机制
    生成器
    装饰器
    模块与包
    MES实施会有哪些情况?为你介绍两种常见的类型
    中国智慧工厂未来发展及趋势几何?这里给你讲个清楚
    未来智能工厂是什么样?这五种产业必不可少
    制造企业非常头疼的插单问题,本文给你这些实用建议,第7点最具价值
    MES选型很困惑?避开这三个禁忌!
    如何适应应用场景?高级排程系统的功能如此强大!
  • 原文地址:https://www.cnblogs.com/joyjoe/p/6746164.html
Copyright © 2011-2022 走看看