PHP Redis操作
redis数据类型:
-
String 存储的值为字符串、整数、浮点数统称为元素,对字符串操作、对整数类型加减。
-
List一个有序序列集合,序列两端推入、弹出元素、修剪、查找或移除元素。
-
Set 多个唯一元素组成的集合,从集合中插入或者删除元素或者查找某个元素是否在集合中。
-
Hash 多个key-value组成的散列组,key一定是字符串value是元素,按照key进行增加删除操作,hash key必须是唯一的。
-
Sort Set 带分数的score-value唯一有序集合,其中score为浮点,value为元素.带分数元素的插入与删除,按照分数进行范围查找,按照排名进行查找的操作。
-
String类型:
set命令
set string1 test
get string1
test
对整型的增加与减少操作
set string2 4
get string2
4
incr string2
get string2
5
decrby string2 2
get string2
3
List类型
有序列表允许从序列的左边和右边进行推入或弹出元素。
lpush list1 12 左边推入元素
lpush list1 13
因为队列先入先出
rpop list1结果是12
lpush list2 12
lpush list2 13
lpush list2 13
llen list2
3
List不要求元素唯一所以结果是3。
-
Set
无序集合存储多个不同的元素,每个元素的值不同,可以对元素的值添加删除以及检查元素是否在集合中。
sadd set1 12
scard set1
1
sadd set1 13
sadd set1 13
scard set1
2
sismember set1 13
判断13是否在集合中
srem set1 13
删除13元素
sismember set1 13
0
已经被删除了。
-
Hash类型
散列类型将多个键值对存储到redis键里面,键值的键为字符串类型,添加和删除键值对命令,获取所有键值对命令,对键值对的值进行自增自减命令。
hset hash1 key1 12 插入1个键值对 键为key1值为12
hget hash1 key1
12
hset hash1 key2 13
hset hash1 key3 13
hlen hash1
3
后面插入的元素值一样,键不一样,只要键不一样就是不同的条数所以返回了3.
hset hash1 key3 14
hget hash1 key3
14
一次性获取多个键的值
hmget hash1 key1 key2会按照key1 key2的顺序返回对应的值
12
13
Sort set类型
有序分数集合,存储的也是映射,分数与元素的映射,分数是浮点型的,可以看成是一个排行榜每一个元素都有自己的分数score,还有一个rank排行属性,从0开始最小随着score分值的变大排名不断变大。value必须为全局唯一.
如果score一样按照value的字典顺序排列。
zadd zset1 10.1 val1
zadd zset1 11.1 val2
zadd zset1 9.2 val3
zcard zset1
3
按照rank从小到大0-2这三个元素的分数
zrange zset1 0 2 withscores
zrank zset1 val2 指定value排名
2
zadd zset1 12.2 val3
zrange zset1 0 2 withscores
zadd zset1 12.2 val2
zrange zset1 0 2 withsocres
因为value2的正序比3小,如果两个元素score一样按照两个元素的字典顺序排列先后。
文档地址:https://github.com/phpredis/phpredis
redis类的命名空间是根.
PHP连接redis
<?php
$redis = new \Redis();//根目录的说明符说明redis类在根目录下。
$redis->connect('127.0.0.1',7200);
$redis = new \Redis();
$redis->connect('127.0.0.1',7200);
$redis->delete('string1');//确保操作的key是空的.
$redis->set('string1','val1');
$val = $redis->get('string1');
var_dump($val);
$redis->set('string1',4);
$redis->incr('string1',2);
$val = $redis->get('string1');
var_dump($val);
$redis = new \Redis();
$redis->connect('127.0.0.1',7200);
$redis->delete('list1');
$redis->lpush('list1','A');
$redis->lpush('list1','B');
$redis->lpush('list1','C');
$val = $redis->rPop('list1');
var_dump($val);
结果输入A.
$redis = new \Redis();
$redis->connect('127.0.0.1',7200);
$redis->delete('set1');
$redis->sAdd('set1','A');
$redis->sAdd('set1','B');
$redis->sAdd('set1','C');
$redis->sAdd('set1','C');
由于set元素必须是唯一的虽然插入了四次,因为第三次与第四次重复插入相同的元素。所以元素个数为3个。
$val = $redis->sCard('set1');
var_dump($val);
$val = $redis->sMembers('set1');//数组形式返回所有元素
var_dump($val);
存储key-value结构,key为string类型,value为一个元素.
$redis = new \Redis();
$redis->connect('127.0.0.1',7200);
$redis->delete('driver1');
$redis->hSet('driver1','name','test');
$redis->hSet('driver1','age',25);
$redis->hSet('driver1','gender',1);
$val = $redis->hGet('driver1','name');
var_dump($val);
$val = $redis->hMGet('driver1',array('name','age'));
var_dump($val);
$redis = new \Redis();
$redis->connect('127.0.0.1',7200);
$redis->delete('zset1');
$redis->zAdd('zset1',100,'xiaoming');
$redis->zAdd('zset1',90,'xiaohong');
$redis->zAdd('zset1',93,'xiaowang');
$val = $redis->zRange('zset1',0,-1);//从低到高输出所有元素。
var_dump($val);
$val = $redis->zRevRange('zset1',0,-1);//从高到低
var_dump($val);