首页 > 代码库 > [Redis]Redis入门笔记

[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)

二、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 joyjoeget string1set string2 4get string2incr string2get string2incrby string2 5get string2decr string2 4get string2decr string2get string2

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

incr key

incrby key increment

decr key

decrby key decrementd

2. list

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

lpush list1 "0001"lpush list1 20lpush list1 "JoyJoe"llen  list1rpop  list1rpop  list1rpop  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 joyjoehset hash1 age 20hset hash1 sex malehset hash1 age 25hget hash1 agehmget 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] 查看某个元素在集合中的排名

五、PHP安装Redis扩展模块

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

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

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

sudo /Applications/XAMPP/xamppfiles/bin/phpize

3. 执行

sudo MACOSX DEPLOYMENT_TARGET=10.7 CFLAGS="-arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp"

CCFLAGS="-arch i386 -arch x86_64 -g -Os -pipe" CXXFLAGS="-arch i386 -arch x86_64 -g -Os -pipe"

LDFLAGS="-arch i386 -arch x86_64 -bind_at_load"

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

可以直接执行./configure 命令试试

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

4. 执行 sudo make && sudo make install

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))));?>

 

[Redis]Redis入门笔记