$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 获取数据库信息。