[Redis]Redis入门笔记
Posted 小碎石
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[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 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] 查看某个元素在集合中的排名
五、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入门笔记的主要内容,如果未能解决你的问题,请参考以下文章