[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))));
?>
原文地址:https://www.cnblogs.com/joyjoe/p/6746164.html