PHP操作redis

Posted cat_crazy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP操作redis相关的知识,希望对你有一定的参考价值。

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

Redis支持的数据类型有 Stirng(字符串), List(列表), Hash(字典), Set(集合), Sorted Set(有序集合);

redis版本是Redis 2.6.12 系统是在Windows+Apache2.4+php5.6

连接:

1     //实例化redis
2     $redis = new Redis();
3     //连接
4     $redis->connect(\'127.0.0.1\', 6379);
5     //检测是否连接成功
6     echo "Server is running: " . $redis->ping();
7     // 输出结果 Server is running: +PONG    

Strng(字符串):

  // 设置一个字符串的值
    $redis->set(\'cat\', 111);

    //获取一个字符串的值
    echo $redis->get(\'cat\'); // 111

    // 重复set
    $redis->set(\'cat\', 222);
    echo $redis->get(\'cat\'); // 222

List(列表):

 1     //列表
 2     //存储数据到列表中
 3     $redis->lpush(\'list\', \'html\');
 4     $redis->lpush(\'list\', \'css\');
 5     $redis->lpush(\'list\', \'php\');
 6 
 7     //获取列表中所有的值
 8     $list = $redis->lrange(\'list\', 0, -1);
 9     print_r($list);echo \'<br>\'; 
10 
11     //从右侧加入一个
12     $redis->rpush(\'list\', \'mysql\');
13     $list = $redis->lrange(\'list\', 0, -1);
14     print_r($list);echo \'<br>\';
15 
16     //从左侧弹出一个
17     $redis->lpop(\'list\');
18     $list = $redis->lrange(\'list\', 0, -1);
19     print_r($list);echo \'<br>\';
20 
21     //从右侧弹出一个
22     $redis->rpop(\'list\');
23     $list = $redis->lrange(\'list\', 0, -1);
24     print_r($list);echo \'<br>\';
25 
26     // 结果
27     // Array ( [0] => php [1] => css [2] => html )
28     // Array ( [0] => php [1] => css [2] => html [3] => mysql )
29     // Array ( [0] => css [1] => html [2] => mysql )
30     // Array ( [0] => css [1] => html ) 
 1 <?php
 2     //实例化redis
 3     $redis = new Redis();
 4     //连接
 5     $redis->connect(\'127.0.0.1\', 6379);
 6     //列表
 7     //存储数据到列表中
 8     $redis->lpush(\'list\', \'html\');
 9     $redis->lpush(\'list\', \'css\');
10     $redis->lpush(\'list\', \'php\');
11     $redis->lpush(\'list\', \'mysql\');
12     $redis->lpush(\'list\', \'javascript\');
13     $redis->lpush(\'list\', \'ajax\');
14 
15     //获取列表中所有的值
16     $list = $redis->lrange(\'list\', 0, -1);
17     print_r($list);echo \'<br>\'; 
18 
19     //获取列表的长度
20     $length = $redis->lsize(\'list\');
21     echo $length;echo \'<br>\';
22 
23     //返回列表key中index位置的值
24     echo $redis->lget(\'list\', 2);echo \'<br>\';
25     echo $redis->lindex(\'list\', 2);echo \'<br>\';
26 
27     //设置列表中index位置的值
28     echo $redis->lset(\'list\', 2, \'linux\');echo \'<br>\';
29     $list = $redis->lrange(\'list\', 0, -1);
30     print_r($list);echo \'<br>\';
31 
32     //返回key中从start到end位置间的元素
33     $list = $redis->lrange(\'list\', 0, 2);
34     print_r($list);echo \'<br>\';
35 
36     $list = $redis->lgetrange(\'list\', 0, 2);
37     print_r($list);echo \'<br>\';
38 
39     //截取链表中start到end的元素
    //截取列表后列表发生变化,列表保留截取的元素,其余的删除
40 $list = $redis->ltrim(\'list\', 0, 1); 41 print_r($list);echo \'<br>\'; 42 43 $list = $redis->lrange(\'list\', 0, -1); 44 print_r($list);echo \'<br>\'; 45 // 结果 46 // Array ( [0] => ajax [1] => javascript [2] => mysql [3] => php [4] => css [5] => html ) 47 // 6 48 // mysql 49 // mysql 50 // 1 51 // Array ( [0] => ajax [1] => javascript [2] => linux [3] => php [4] => css [5] => html ) 52 // Array ( [0] => ajax [1] => javascript [2] => linux ) 53 // Array ( [0] => ajax [1] => javascript [2] => linux ) 54 // 1 55 // Array ( [0] => ajax [1] => javascript )
 1 <?php
 2     //实例化redis
 3     $redis = new Redis();
 4     //连接
 5     $redis->connect(\'127.0.0.1\', 6379);
 6     //列表
 7     //存储数据到列表中
 8     $redis->lpush(\'list\', \'html\');
 9     $redis->lpush(\'list\', \'html\');
10     $redis->lpush(\'list\', \'html\');
11     $redis->lpush(\'list\', \'css\');
12     $redis->lpush(\'list\', \'php\');
13     $redis->lpush(\'list\', \'mysql\');
14     $redis->lpush(\'list\', \'javascript\');
15     $redis->lpush(\'list\', \'html\');
16     $redis->lpush(\'list\', \'html\');
17     $redis->lpush(\'list\', \'html\');
18     $redis->lpush(\'list\', \'ajax\');
19 
20     //获取列表中所有的值
21     $list = $redis->lrange(\'list\', 0, -1);
22     print_r($list);echo \'<br>\'; 
23 
24     //删除列表中count个值为value的元素
25     //从左向右删
26     $redis->lrem(\'list\', \'html\', 2);
27     $list = $redis->lrange(\'list\', 0, -1);
28     print_r($list);echo \'<br>\'; 
29     
30     //从右向左删
31     $redis->lrem(\'list\', \'html\', -2);
32     $list = $redis->lrange(\'list\', 0, -1);
33     print_r($list);echo \'<br>\'; 
34 
35     //删除所有
36     $redis->lrem(\'list\', \'html\', 0);
37     $list = $redis->lrange(\'list\', 0, -1);
38     print_r($list);echo \'<br>\';
39 
40     // 结果
41     // Array ( [0] => ajax [1] => html [2] => html [3] => html [4] => javascript [5] => mysql [6] => php [7] => css [8] => html [9] => html [10] => html )
42     // Array ( [0] => ajax [1] => html [2] => javascript [3] => mysql [4] => php [5] => css [6] => html [7] => html [8] => html )
43     // Array ( [0] => ajax [1] => html [2] => javascript [3] => mysql [4] => php [5] => css [6] => html )
44     // Array ( [0] => ajax [1] => javascript [2] => mysql [3] => php [4] => css )     

 Hash(字典):

 1 <?php
 2     //实例化redis
 3     $redis = new Redis();
 4     //连接
 5     $redis->connect(\'127.0.0.1\', 6379);
 6     //字典
 7     //给hash表中某个key设置value
 8     //如果没有则设置成功,返回1,如果存在会替换原有的值,返回0,失败返回0
 9     echo $redis->hset(\'hash\', \'cat\', \'cat\');echo \'<br>\';
10     echo $redis->hset(\'hash\', \'cat\', \'cat\');echo \'<br>\';
11     echo $redis->hset(\'hash\', \'cat\', \'cat1\');echo \'<br>\';
12     echo $redis->hset(\'hash\', \'dog\', \'dog\');echo \'<br>\';
13     echo $redis->hset(\'hash\', \'bird\', \'bird\');echo \'<br>\';
14     echo $redis->hset(\'hash\', \'monkey\', \'monkey\');echo \'<br>\';
15     //获取hash中某个key的值
16     echo $redis->hget(\'hash\', \'cat\');echo \'<br>\';
17 
18     //获取hash中所有的keys
19     $arr = $redis->hkeys(\'hash\');
20     print_r($arr);echo \'<br>\';
21 
22     //获取hash中所有的值 顺序是随机的
23     $arr = $redis->hvals(\'hash\');
24     print_r($arr);echo \'<br>\';
25 
26     //获取一个hash中所有的key和value 顺序是随机的
27     $arr = $redis->hgetall(\'hash\');
28     print_r($arr);echo \'<br>\';
29 
30     //获取hash中key的数量
31     echo $redis->hlen(\'hash\');echo \'<br>\';
32 
33     //删除hash中一个key 如果表不存在或key不存在则返回false
34     echo $redis->hdel(\'hash\', \'dog\');echo \'<br>\';
35     var_dump($redis->hdel(\'hash\', \'rabbit\'));echo \'<br>\';
36 
37     // 结果
38     // 1
39     // 0
40     // 0
41     // 1
42     // 1
43     // 1
44     // cat1
45     // Array ( [0] => cat [1] => dog [2] => bird [3] => monkey )
46     // Array ( [0] => cat1 [1] => dog [2] => bird [3] => monkey )
47     // Array ( [cat] => cat1 [dog] => dog [bird] => bird [monkey] => monkey )
48     // 4
49     // 1
50     // int(0) 
 1 <?php
 2     //实例化redis
 3     $redis = new Redis();
 4     //连接
 5     $redis->connect(\'127.0.0.1\', 6379);
 6     //字典
 7     //批量设置多个key的值
 8     $arr = [1=>1, 2=>2, 3=>3, 4=>4, 5=>5];
 9     $redis->hmset(\'hash\', $arr);
10     print_r($redis->hgetall(\'hash\'));echo \'<br>\';
11 
12     // 批量获得额多个key的值
13     $arr = [1, 2, 3, 5];
14     $hash = $redis->hmget(\'hash\', $arr);
15     print_r($hash);echo \'<br>\';
16 
17     //检测hash中某个key知否存在
18     echo $redis->hexists(\'hash\', \'1\');echo \'<br>\';
19     var_dump($redis->hexists(\'hash\', \'cat\'));echo \'<br>\';
20 
21     print_r($redis->hgetall(\'hash\'));echo \'<br>\';
22 
23     //给hash表中key增加一个整数值
24     $redis->hincrby(\'hash\', \'1\', 1);
25     print_r($redis->hgetall(\'hash\'));echo \'<br>\';
26 
27     //给hash中的某个key增加一个浮点值
28     $redis->hincrbyfloat(\'hash\', 2, 1.3);
29     print_r($redis->hgetall(\'hash\'));echo \'<br>\';
30 
31     //结果
32     // Array ( [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 )
33     // Array ( [1] => 1 [2] => 2 [3] => 3 [5] => 5 )
34     // 1
35     // bool(false)
36     // Array ( [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 )
37     // Array ( [1] => 2 [2] => 2 [3] => 3 [4] => 4 [5] => 5 )
38     // Array ( [1] => 2 [2] => 3.3 [3] => 3 [4] => 4 [5] => 5 ) 

 Set(集合):

 1 <?php
 2     //实例化redis
 3     $redis = new Redis();
 4     //连接
 5     $redis->connect(\'127.0.0.1\', 6379);
 6     //集合
 7     // 添加一个元素
 8     echo $redis->sadd(\'set\', \'cat\');echo \'<br>\';
 9     echo $redis->sadd(\'set\', \'cat\');echo \'<br>\';
10     echo $redis->sadd(\'set\', \'dog\');echo \'<br>\';
11     echo $redis->sadd(\'set\', \'rabbit\');echo \'<br>\';
12     echo $redis->sadd(\'set\', \'bear\');echo \'<br>\';
13     echo $redis->sadd(\'set\', \'horse\');echo \'<br>\';
14 
15     // 查看集合中所有的元素
16     $set = $redis->smembers(\'set\');
17     print_r($set);echo \'<br>\';
18 
19     //删除集合中的value
20     echo $redis->srem(\'set\', \'cat\');echo \'<br>\';
21     var_dump($redis->srem(\'set\', \'bird\'));echo \'<br>\';
22 
23     $set = $redis->smembers(\'set\');
24     print_r($set);echo \'<br>\';
25 
26     //判断元素是否是set的成员
27     var_dump($redis->sismember(\'set\', \'dog\'));echo \'<br>\';
28     var_dump($redis->sismember(\'set\', \'bird\'));echo \'<br>\';
29 
30     //查看集合中成员的数量
31     echo $redis->scard(\'set\');echo \'<br>\';
32 
33     //移除并返回集合中的一个随机元素(返回被移除的元素)
34     echo $redis->spop(\'set\');echo \'<br>\';
35 
36     print_r($redis->smembers(\'set\'));echo \'<br>\';
37 
38     // 结果
39     // 1
40     // 0
41     // 1
42     // 1
43     // 1
44     // 1
45     // Array ( [0] => rabbit [1] => cat [2] => bear [3] => dog [4] => horse )
46     // 1
47     // int(0)
48     // Array ( [0] => dog [1] => rabbit [2] => horse [3] => bear )
49     // bool(true)
50     // bool(false)
51     // 4
52     // bear
53     // Array ( [0] => dog [1] => rabbit [2] => horse ) 
 1 <?php
 2     //实例化redis
 3     $redis = new Redis();
 4     //连接
 5     $redis->connect(\'127.0.0.1\', 6379);
 6     //集合
 7     $redis->sadd(\'set\', \'horse\');
 8     $redis->sadd(\'set\', \'cat\');
 9     $redis->sadd(\'set\', \'dog\');
10     $redis->sadd(\'set\', \'bird\');
11     $redis->sadd(\'set2\', \'fish\');
12     $redis->sadd(\'set2\', \'dog\');
13     $redis->sadd(\'set2\', \'bird\');
14 
15     print_r($redis->smembers(\'set\'));echo \'<br>\';
16     print_r($redis->smembers(\'set2\'));echo \'<br>\';
17 
18     //返回集合的交集
19     print_r($redis->sinter(\'set\', \'set2\'));echo \'<br>\';
20 
21     //执行交集操作 并结果放到一个集合中
22     $redis->sinterstore(\'output\', \'set\', \'set2\');
23     print_r($redis->smembers(\'output\'));echo \'<br>\';
24 
25     //返回集合的并集
26     print_r($redis->sunion(\'set\', \'set2\'));echo \'<br>\';
27 
28     //执行并集操作 并结果放到一个集合中
29     $redis->sunionstore(\'output\', \'set\', \'set2\');
30     print_r($redis->smembers(\'output\'));echo \'<br>\';
31 
32     //返回集合的差集
33     print_r($redis->sdiff(\'set\', \'set2\'));echo \'<br>\';
34 
35     //执行差集操作 并结果放到一个集合中
36     $redis->sdiffstore(\'output\', \'set\', \'set2\');
37     print_r($redis->smembers(\'output\'));echo \'<br>\';
38 
39     // 结果
40     // Array ( [0] => cat [1] => dog [2] => bird [3] => horse )
41     // Array ( [0] => bird [1] => dog [2] => fish )
42     // Array ( [0] => bird [1] => dog )
43     // Array ( [0] => dog [1] => bird )
44     // Array ( [0] => cat [1] => dog [2] => bird [3] => horse [4] => fish )
45     // Array ( [0] => cat [1] => dog [2] => bird [3] => horse [4] => fish )
46     // Array ( [0] => horse [1] => cat )
47     // Array ( [0] => horse [1] => cat ) 

Sorted Set(有序集合):

 1 <?php
 2     //实例化redis
 3     $redis = new Redis();
 4     //连接
 5     $redis->connect(\'127.0.0.1\', 6379);
 6     //有序集合
 7     //添加元素
 8     echo $redis->zadd(\'set\', 1, \'cat\');echo \'<br>\';
 9     echo $redis->zadd(\'set\', 2, \'dog\');echo \'<br>\';
10     echo $redis->zadd(\'set\', 3, \'fish\');echo \'<br>\';
11     echo $redis->zadd(\'set\', 4, \'dog\');echo \'<br>\';
12     echo $redis->zadd(\'set\', 4, \'bird\');echo \'<br>\';
13     
14     //返回集合中的所有元素
15     print_r($redis->zrange(\'set\', 0, -1));echo \'<br>\';
16     print_r($redis->zrange(\'set\', 0, -1, true));echo \'<br>\';
17 
18     //返回元素的score值
19     echo $redis->zscore(\'set\', \'dog\');echo \'<br>\';
20 
21     //返回存储的个数
22     echo $redis->zcard(\'set\');echo \'<br>\';
23 
24     //删除指定成员
25     $redis->zrem(\'set\', \'cat\');
26

以上是关于PHP操作redis的主要内容,如果未能解决你的问题,请参考以下文章

30个php操作redis常用方法代码例子

30个php操作redis常用方法代码例子

30个php操作redis常用方法代码例子

封装php redis缓存操作类

php 操作Redis发送短信

jedis连接redis