$redis = new Redis();
第一种String
String类型是包含很多种类型的特殊类型,并且是二进制安全的。比如序列化的对象进行储存,比如一张图片进行二进制储存,比如一个简单的字符串数值等等。
set和get方法:
设置值set name realValue ; $redis->set(‘key’, ‘value’)
取值 get name; $redis->get(‘key’)
说明:set设置name的时候,如果name重复,设置的值会进行覆盖。
setnx 方法 判断是否重复的,写入值
设置值setnx name realValue
说明:如果这个name已经存在,不会进行覆盖,直接返回0.如果name不存在才会插入新的值。
setex方法 带生存时间的写入值
设置值setex name time(秒) realValue ; $redis->setex(‘key’, 3600, ‘value’);
说明:设置这个name的value在缓存中存在的过期时间,过了这个时间后返回nil。在redis中nil标示null的意思。
setrange方法:修改字符串的一部分
<?php
namespace app\index\controller;
use Redis;
class Index
{
public function index()
{
$redis = new Redis();
$redis->connect('127.0.0.1',6379);
// setRange() 修改字符串的一部分
// getRange() 获取字符串的一部分
$redis->set('key','hello world');
$redis->setRange('key',6,'redis');
echo $redis->get('key');// hello redis
echo $redis->getRange('key',0,6); //hello r
}
}
第二种Hash类型
Hash类型是String类型的filed和value的映射表,或者说是一个String的结合,他特别适合存储对象。相比较而言把一个对象存储在Hash类型中要比直接存储在String中更加节省空间。并方便存储整个对象,Hash类型也是我们工作中最常用的一种。
形如:hset - 用于为哈希表中的字段赋值
// 将哈希表 key 中的字段 field1 的值设为 value1;
// 成功时返回1,失败时返回0; 但是如果 key1已存在,只是重新赋值的话 仍返回0,并覆盖原值
$redis->hSet('key', 'field1', 'value1');
使用hget来获取值 hget user name 就能获取到这个对象中的name属性的值。 hGet - 获取存储在哈希表中指定字段的值
// 成功时返回字段值,失败时返回 false
$redis->hGet('key', 'field2');
hmset可进行批量存储多个键值对。hMSet - 同时将多个 field-value (域值)对设置到哈希表中
// 成功返回 true
$redis->hMSet('key', [
'field1' => 'value1',
'field2' => 'value3'
]);
hmget可进行批量获取多个键值对。hMGet - 获取所有给定字段的值
$redis->hMGet('h', ['x', 'float']);
Hash类型中同样也有hsetnx,他和setnx大同小异。hSetNx - 只有当字段 field 不存在时,设置哈希表字段的值
// 成功返回 true, 失败返回 false
$redis->hSetNx('key', 'field3', 'value2');
hDel - 删除一个或多个哈希表字段
// 成功时返回删除个数,失败时返回0
$redis->hDel('key','field1');
$redis->hDel('key','field1', 'field2');
hincrby和hdecrby集合递增和递减。
hIncrBy - 为哈希表 key 中的指定字段的整数值加上增量
$redis->hIncrBy('h','x',1); // 返回增量后的结果
hexists 如果存在返回1,不存在返回0 hExists - 查看哈希表 key 中,指定字段是否存在
$redis->hExists('key', 'field2');
hlen 返回hash中所有键的数值。hlen - 获取哈希表中字段的数量
$redis->hLen('h');
hkeys返回hash中的所有键。 hkeys - 获取指定哈希表中的所有字段
$redis->hKeys('h');
/* 输出
array(2) {
[0]=>
string(1) "x"
[1]=>
string(5) "float"
}
*/
hvals 返回Hash中所有的值。hVals - 获取哈希表中所有值
$redis->hVals('key');
/* 输出
array(3) {
[0]=>
string(6) "value1"
[1]=>
string(6) "value3"
[2]=>
string(6) "value2"
}
*/
hgetall返回Hash中所有的键和值。 hGetAll - 获取在哈希表中指定 key 的所有字段和值
$redis->hGetAll('key');
/* 输出
array(2) {
["field2"]=>
string(6) "value3"
["field3"]=>
string(6) "value2"
}
*/
hIncrByFloat - 为哈希表 key 中的指定字段的浮点数值加上增量
$redis->hIncrByFloat('h', 'x', 1.5); // 返回增量后的结果
hScan - 迭代哈希表中的键值对
$iterator = null;
while ($elements = $redis->hScan('h', $iterator)) {
foreach ($elements as $key => $value) {
echo $key . ' => ' . $value . PHP_EOL;
}
}
/* 输出
x => 9.5
float => 3
*/
第三种List
List类型是一个链表结构的集合,其主要功能有push,pop获取元素等等。更详细的说List类型是一个双端链表结构,我们可以通过相关操作进行集合的头部或者尾部添加删除元素。List的设计非常简单精巧,既可以作为栈又可以作为队列。满足绝大多数要求。
lpush方法:从头部添加元素,(栈)先进后出。
设置值 lpush list hello
说明:创建一个name为list的栈,并且入栈一个hello
rpush方法:从尾部添加元素(队列)先进先出
设置值lpush list2 hello
说明:创建一个name为list2的队列,并且入栈一个hello
lrange方法:查看list中的值
linsert list2 before [集合的元素] [要插入的元素]
lset方法 将指定下标的元素替换掉
lrem方法:删除制定元素,并且返回删除元素的个数。
lpop方法:从List头部删除元素,并且返回删除的元素。
rpop方法:从List尾部删除元素,并且返回删除的元素。
llen方法:返回元素的个数。
lindex方法:返回名称为key的元素在List中的index位置的元素。lindex list2 0 返回第一个元素
第四种Set类型
set集合是String类型的无序集合,set是通过hashtable实现的,对集合我们可以取交集,并集,差集。
sadd方法:向名称为key的set中添加元素。
小结:set集合不允许重复元素,smembers查看set中的所有元素。
srem方法 删除set集合元素。srem name 值
spop方法 随机返回删除的key
sdiff返回两个集合不同元素,哪个集合在前面就以哪个集合为标准。
sdiffstore 将返回的不同元素存储在另一个集合里面。 sdiffstore set3 set1 set2 。吧1和2的不同元素存储在3中
sinter 返回两个集合的交集。sinter set1 set2 返回set1中和set2中的交集元素。
sinterstore 将返回的交集存储在一个新的集合中
smove方法:从一个set集合中移动元素到另一个set集合中 smove set2 set1 bbb 将set2中的bbb移动到set1中。
scard方法:查看集合中元素的个数。
第五种ZSet类型
Zset是在set的基础上做了一个有序的调整。
zadd方法:向有序集合中添加一个元素,如果该元素存在,就更新顺序。
小结:在重复插入的时候会根据顺序属性更新。
语法:zadd set1 1 aaa 其中的1代表序号。 就是排序的序号。aaa代表集合的值,set1代表集合的名字。
zrange 方法,查看集合中的值 zrange set1 0 -1 withscores
说明:withscores代表把序号也查询出来,不想显示序号可以不加。
zrem方法 删除集合中的元素。
redis高级命令
keys * 返回所有的name
exists 是否存在指定的name
expire 设置某个key的过期时间,使用ttl查看剩余时间
persist 取消过期时间
select选择数据库,数据库为0到15,共16个数据库,默认进入的是0个数据库。
move key [数据库下标] 转移到其他数据库中
randomkey 随机返回数据库中的一个key
rename key newkey 重命名key
dbsize 查看当前数据库中key的数量
flushdb 清空当前数据库,flushall清空所有数据库。
config get * 获取当前redis配置项。
info 获取数据库信息。