江南夜雨声 發表於 2019-5-28 11:43:00

PHP操作redis

<p>原文地址:https://www.cnblogs.com/catcrazy/p/6415802.html</p>
<p>Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。</p>
<p>Redis支持的数据类型有 Stirng(字符串), List(列表), Hash(字典), Set(集合), Sorted Set(有序集合);</p>
<p>redis版本是Redis 2.6.12 系统是在Windows+Apache2.4+php5.6</p>
<p>连接:</p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif"></span></div>
<pre>1   //实例化redis
2   $redis = new Redis();
3   //连接
4   $redis-&gt;connect('127.0.0.1', 6379);
5   //检测是否连接成功
6   echo "Server is running: " . $redis-&gt;ping();
7   // 输出结果 Server is running: +PONG    </pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif"></span></div>
</div>
<p>Strng(字符串):</p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif"></span></div>
<pre>  // 设置一个字符串的值
    $redis-&gt;set('cat', 111);

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

    // 重复set
    $redis-&gt;set('cat', 222);
    echo $redis-&gt;get('cat'); // 222</pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif"></span></div>
</div>
<p>List(列表):</p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif"></span></div>
<pre> 1   //列表
2   //存储数据到列表中
3   $redis-&gt;lpush('list', 'html');
4   $redis-&gt;lpush('list', 'css');
5   $redis-&gt;lpush('list', 'php');
6
7   //获取列表中所有的值
8   $list = $redis-&gt;lrange('list', 0, -1);
9   print_r($list);echo '&lt;br&gt;';
10
11   //从右侧加入一个
12   $redis-&gt;rpush('list', 'mysql');
13   $list = $redis-&gt;lrange('list', 0, -1);
14   print_r($list);echo '&lt;br&gt;';
15
16   //从左侧弹出一个
17   $redis-&gt;lpop('list');
18   $list = $redis-&gt;lrange('list', 0, -1);
19   print_r($list);echo '&lt;br&gt;';
20
21   //从右侧弹出一个
22   $redis-&gt;rpop('list');
23   $list = $redis-&gt;lrange('list', 0, -1);
24   print_r($list);echo '&lt;br&gt;';
25
26   // 结果
27   // Array ( =&gt; php =&gt; css =&gt; html )
28   // Array ( =&gt; php =&gt; css =&gt; html =&gt; mysql )
29   // Array ( =&gt; css =&gt; html =&gt; mysql )
30   // Array ( =&gt; css =&gt; html ) </pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif"></span></div>
</div>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif"></span></div>
<pre> 1 &lt;?php
2   //实例化redis
3   $redis = new Redis();
4   //连接
5   $redis-&gt;connect('127.0.0.1', 6379);
6   //列表
7   //存储数据到列表中
8   $redis-&gt;lpush('list', 'html');
9   $redis-&gt;lpush('list', 'css');
10   $redis-&gt;lpush('list', 'php');
11   $redis-&gt;lpush('list', 'mysql');
12   $redis-&gt;lpush('list', 'javascript');
13   $redis-&gt;lpush('list', 'ajax');
14
15   //获取列表中所有的值
16   $list = $redis-&gt;lrange('list', 0, -1);
17   print_r($list);echo '&lt;br&gt;';
18
19   //获取列表的长度
20   $length = $redis-&gt;lsize('list');
21   echo $length;echo '&lt;br&gt;';
22
23   //返回列表key中index位置的值
24   echo $redis-&gt;lget('list', 2);echo '&lt;br&gt;';
25   echo $redis-&gt;lindex('list', 2);echo '&lt;br&gt;';
26
27   //设置列表中index位置的值
28   echo $redis-&gt;lset('list', 2, 'linux');echo '&lt;br&gt;';
29   $list = $redis-&gt;lrange('list', 0, -1);
30   print_r($list);echo '&lt;br&gt;';
31
32   //返回key中从start到end位置间的元素
33   $list = $redis-&gt;lrange('list', 0, 2);
34   print_r($list);echo '&lt;br&gt;';
35
36   $list = $redis-&gt;lgetrange('list', 0, 2);
37   print_r($list);echo '&lt;br&gt;';
38
39   //截取链表中start到end的元素<br>    //截取列表后列表发生变化,列表保留截取的元素,其余的删除
40   $list = $redis-&gt;ltrim('list', 0, 1);
41   print_r($list);echo '&lt;br&gt;';
42   
43   $list = $redis-&gt;lrange('list', 0, -1);
44   print_r($list);echo '&lt;br&gt;';
45   // 结果
46   // Array ( =&gt; ajax =&gt; javascript =&gt; mysql =&gt; php =&gt; css =&gt; html )
47   // 6
48   // mysql
49   // mysql
50   // 1
51   // Array ( =&gt; ajax =&gt; javascript =&gt; linux =&gt; php =&gt; css =&gt; html )
52   // Array ( =&gt; ajax =&gt; javascript =&gt; linux )
53   // Array ( =&gt; ajax =&gt; javascript =&gt; linux )
54   // 1
55   // Array ( =&gt; ajax =&gt; javascript )</pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif"></span></div>
</div>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif"></span></div>
<pre> 1 &lt;?php
2   //实例化redis
3   $redis = new Redis();
4   //连接
5   $redis-&gt;connect('127.0.0.1', 6379);
6   //列表
7   //存储数据到列表中
8   $redis-&gt;lpush('list', 'html');
9   $redis-&gt;lpush('list', 'html');
10   $redis-&gt;lpush('list', 'html');
11   $redis-&gt;lpush('list', 'css');
12   $redis-&gt;lpush('list', 'php');
13   $redis-&gt;lpush('list', 'mysql');
14   $redis-&gt;lpush('list', 'javascript');
15   $redis-&gt;lpush('list', 'html');
16   $redis-&gt;lpush('list', 'html');
17   $redis-&gt;lpush('list', 'html');
18   $redis-&gt;lpush('list', 'ajax');
19
20   //获取列表中所有的值
21   $list = $redis-&gt;lrange('list', 0, -1);
22   print_r($list);echo '&lt;br&gt;';
23
24   //删除列表中count个值为value的元素
25   //从左向右删
26   $redis-&gt;lrem('list', 'html', 2);
27   $list = $redis-&gt;lrange('list', 0, -1);
28   print_r($list);echo '&lt;br&gt;';
29   
30   //从右向左删
31   $redis-&gt;lrem('list', 'html', -2);
32   $list = $redis-&gt;lrange('list', 0, -1);
33   print_r($list);echo '&lt;br&gt;';
34
35   //删除所有
36   $redis-&gt;lrem('list', 'html', 0);
37   $list = $redis-&gt;lrange('list', 0, -1);
38   print_r($list);echo '&lt;br&gt;';
39
40   // 结果
41   // Array ( =&gt; ajax =&gt; html =&gt; html =&gt; html =&gt; javascript =&gt; mysql =&gt; php =&gt; css =&gt; html =&gt; html =&gt; html )
42   // Array ( =&gt; ajax =&gt; html =&gt; javascript =&gt; mysql =&gt; php =&gt; css =&gt; html =&gt; html =&gt; html )
43   // Array ( =&gt; ajax =&gt; html =&gt; javascript =&gt; mysql =&gt; php =&gt; css =&gt; html )
44   // Array ( =&gt; ajax =&gt; javascript =&gt; mysql =&gt; php =&gt; css )   </pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif"></span></div>
</div>
<p>&nbsp;Hash(字典):</p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif"></span></div>
<pre> 1 &lt;?php
2   //实例化redis
3   $redis = new Redis();
4   //连接
5   $redis-&gt;connect('127.0.0.1', 6379);
6   //字典
7   //给hash表中某个key设置value
8   //如果没有则设置成功,返回1,如果存在会替换原有的值,返回0,失败返回0
9   echo $redis-&gt;hset('hash', 'cat', 'cat');echo '&lt;br&gt;';
10   echo $redis-&gt;hset('hash', 'cat', 'cat');echo '&lt;br&gt;';
11   echo $redis-&gt;hset('hash', 'cat', 'cat1');echo '&lt;br&gt;';
12   echo $redis-&gt;hset('hash', 'dog', 'dog');echo '&lt;br&gt;';
13   echo $redis-&gt;hset('hash', 'bird', 'bird');echo '&lt;br&gt;';
14   echo $redis-&gt;hset('hash', 'monkey', 'monkey');echo '&lt;br&gt;';
15   //获取hash中某个key的值
16   echo $redis-&gt;hget('hash', 'cat');echo '&lt;br&gt;';
17
18   //获取hash中所有的keys
19   $arr = $redis-&gt;hkeys('hash');
20   print_r($arr);echo '&lt;br&gt;';
21
22   //获取hash中所有的值 顺序是随机的
23   $arr = $redis-&gt;hvals('hash');
24   print_r($arr);echo '&lt;br&gt;';
25
26   //获取一个hash中所有的key和value 顺序是随机的
27   $arr = $redis-&gt;hgetall('hash');
28   print_r($arr);echo '&lt;br&gt;';
29
30   //获取hash中key的数量
31   echo $redis-&gt;hlen('hash');echo '&lt;br&gt;';
32
33   //删除hash中一个key 如果表不存在或key不存在则返回false
34   echo $redis-&gt;hdel('hash', 'dog');echo '&lt;br&gt;';
35   var_dump($redis-&gt;hdel('hash', 'rabbit'));echo '&lt;br&gt;';
36
37   // 结果
38   // 1
39   // 0
40   // 0
41   // 1
42   // 1
43   // 1
44   // cat1
45   // Array ( =&gt; cat =&gt; dog =&gt; bird =&gt; monkey )
46   // Array ( =&gt; cat1 =&gt; dog =&gt; bird =&gt; monkey )
47   // Array ( =&gt; cat1 =&gt; dog =&gt; bird =&gt; monkey )
48   // 4
49   // 1
50   // int(0) </pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif"></span></div>
</div>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif"></span></div>
<pre> 1 &lt;?php
2   //实例化redis
3   $redis = new Redis();
4   //连接
5   $redis-&gt;connect('127.0.0.1', 6379);
6   //字典
7   //批量设置多个key的值
8   $arr = ;
9   $redis-&gt;hmset('hash', $arr);
10   print_r($redis-&gt;hgetall('hash'));echo '&lt;br&gt;';
11
12   // 批量获得额多个key的值
13   $arr = ;
14   $hash = $redis-&gt;hmget('hash', $arr);
15   print_r($hash);echo '&lt;br&gt;';
16
17   //检测hash中某个key知否存在
18   echo $redis-&gt;hexists('hash', '1');echo '&lt;br&gt;';
19   var_dump($redis-&gt;hexists('hash', 'cat'));echo '&lt;br&gt;';
20
21   print_r($redis-&gt;hgetall('hash'));echo '&lt;br&gt;';
22
23   //给hash表中key增加一个整数值
24   $redis-&gt;hincrby('hash', '1', 1);
25   print_r($redis-&gt;hgetall('hash'));echo '&lt;br&gt;';
26
27   //给hash中的某个key增加一个浮点值
28   $redis-&gt;hincrbyfloat('hash', 2, 1.3);
29   print_r($redis-&gt;hgetall('hash'));echo '&lt;br&gt;';
30
31   //结果
32   // Array ( =&gt; 1 =&gt; 2 =&gt; 3 =&gt; 4 =&gt; 5 )
33   // Array ( =&gt; 1 =&gt; 2 =&gt; 3 =&gt; 5 )
34   // 1
35   // bool(false)
36   // Array ( =&gt; 1 =&gt; 2 =&gt; 3 =&gt; 4 =&gt; 5 )
37   // Array ( =&gt; 2 =&gt; 2 =&gt; 3 =&gt; 4 =&gt; 5 )
38   // Array ( =&gt; 2 =&gt; 3.3 =&gt; 3 =&gt; 4 =&gt; 5 ) </pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif"></span></div>
</div>
<p>&nbsp;Set(集合):</p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif"></span></div>
<pre> 1 &lt;?php
2   //实例化redis
3   $redis = new Redis();
4   //连接
5   $redis-&gt;connect('127.0.0.1', 6379);
6   //集合
7   // 添加一个元素
8   echo $redis-&gt;sadd('set', 'cat');echo '&lt;br&gt;';
9   echo $redis-&gt;sadd('set', 'cat');echo '&lt;br&gt;';
10   echo $redis-&gt;sadd('set', 'dog');echo '&lt;br&gt;';
11   echo $redis-&gt;sadd('set', 'rabbit');echo '&lt;br&gt;';
12   echo $redis-&gt;sadd('set', 'bear');echo '&lt;br&gt;';
13   echo $redis-&gt;sadd('set', 'horse');echo '&lt;br&gt;';
14
15   // 查看集合中所有的元素
16   $set = $redis-&gt;smembers('set');
17   print_r($set);echo '&lt;br&gt;';
18
19   //删除集合中的value
20   echo $redis-&gt;srem('set', 'cat');echo '&lt;br&gt;';
21   var_dump($redis-&gt;srem('set', 'bird'));echo '&lt;br&gt;';
22
23   $set = $redis-&gt;smembers('set');
24   print_r($set);echo '&lt;br&gt;';
25
26   //判断元素是否是set的成员
27   var_dump($redis-&gt;sismember('set', 'dog'));echo '&lt;br&gt;';
28   var_dump($redis-&gt;sismember('set', 'bird'));echo '&lt;br&gt;';
29
30   //查看集合中成员的数量
31   echo $redis-&gt;scard('set');echo '&lt;br&gt;';
32
33   //移除并返回集合中的一个随机元素(返回被移除的元素)
34   echo $redis-&gt;spop('set');echo '&lt;br&gt;';
35
36   print_r($redis-&gt;smembers('set'));echo '&lt;br&gt;';
37
38   // 结果
39   // 1
40   // 0
41   // 1
42   // 1
43   // 1
44   // 1
45   // Array ( =&gt; rabbit =&gt; cat =&gt; bear =&gt; dog =&gt; horse )
46   // 1
47   // int(0)
48   // Array ( =&gt; dog =&gt; rabbit =&gt; horse =&gt; bear )
49   // bool(true)
50   // bool(false)
51   // 4
52   // bear
53   // Array ( =&gt; dog =&gt; rabbit =&gt; horse ) </pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif"></span></div>
</div>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif"></span></div>
<pre> 1 &lt;?php
2   //实例化redis
3   $redis = new Redis();
4   //连接
5   $redis-&gt;connect('127.0.0.1', 6379);
6   //集合
7   $redis-&gt;sadd('set', 'horse');
8   $redis-&gt;sadd('set', 'cat');
9   $redis-&gt;sadd('set', 'dog');
10   $redis-&gt;sadd('set', 'bird');
11   $redis-&gt;sadd('set2', 'fish');
12   $redis-&gt;sadd('set2', 'dog');
13   $redis-&gt;sadd('set2', 'bird');
14
15   print_r($redis-&gt;smembers('set'));echo '&lt;br&gt;';
16   print_r($redis-&gt;smembers('set2'));echo '&lt;br&gt;';
17
18   //返回集合的交集
19   print_r($redis-&gt;sinter('set', 'set2'));echo '&lt;br&gt;';
20
21   //执行交集操作 并结果放到一个集合中
22   $redis-&gt;sinterstore('output', 'set', 'set2');
23   print_r($redis-&gt;smembers('output'));echo '&lt;br&gt;';
24
25   //返回集合的并集
26   print_r($redis-&gt;sunion('set', 'set2'));echo '&lt;br&gt;';
27
28   //执行并集操作 并结果放到一个集合中
29   $redis-&gt;sunionstore('output', 'set', 'set2');
30   print_r($redis-&gt;smembers('output'));echo '&lt;br&gt;';
31
32   //返回集合的差集
33   print_r($redis-&gt;sdiff('set', 'set2'));echo '&lt;br&gt;';
34
35   //执行差集操作 并结果放到一个集合中
36   $redis-&gt;sdiffstore('output', 'set', 'set2');
37   print_r($redis-&gt;smembers('output'));echo '&lt;br&gt;';
38
39   // 结果
40   // Array ( =&gt; cat =&gt; dog =&gt; bird =&gt; horse )
41   // Array ( =&gt; bird =&gt; dog =&gt; fish )
42   // Array ( =&gt; bird =&gt; dog )
43   // Array ( =&gt; dog =&gt; bird )
44   // Array ( =&gt; cat =&gt; dog =&gt; bird =&gt; horse =&gt; fish )
45   // Array ( =&gt; cat =&gt; dog =&gt; bird =&gt; horse =&gt; fish )
46   // Array ( =&gt; horse =&gt; cat )
47   // Array ( =&gt; horse =&gt; cat ) </pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif"></span></div>
</div>
<p>Sorted Set(有序集合):</p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif"></span></div>
<pre> 1 &lt;?php
2   //实例化redis
3   $redis = new Redis();
4   //连接
5   $redis-&gt;connect('127.0.0.1', 6379);
6   //有序集合
7   //添加元素
8   echo $redis-&gt;zadd('set', 1, 'cat');echo '&lt;br&gt;';
9   echo $redis-&gt;zadd('set', 2, 'dog');echo '&lt;br&gt;';
10   echo $redis-&gt;zadd('set', 3, 'fish');echo '&lt;br&gt;';
11   echo $redis-&gt;zadd('set', 4, 'dog');echo '&lt;br&gt;';
12   echo $redis-&gt;zadd('set', 4, 'bird');echo '&lt;br&gt;';
13   
14   //返回集合中的所有元素
15   print_r($redis-&gt;zrange('set', 0, -1));echo '&lt;br&gt;';
16   print_r($redis-&gt;zrange('set', 0, -1, true));echo '&lt;br&gt;';
17
18   //返回元素的score值
19   echo $redis-&gt;zscore('set', 'dog');echo '&lt;br&gt;';
20
21   //返回存储的个数
22   echo $redis-&gt;zcard('set');echo '&lt;br&gt;';
23
24   //删除指定成员
25   $redis-&gt;zrem('set', 'cat');
26   print_r($redis-&gt;zrange('set', 0, -1));echo '&lt;br&gt;';
27
28   //返回集合中介于min和max之间的值的个数
29   print_r($redis-&gt;zcount('set', 3, 5));echo '&lt;br&gt;';
30
31   //返回有序集合中score介于min和max之间的值
32   print_r($redis-&gt;zrangebyscore('set', 3, 5));echo '&lt;br&gt;';
33   print_r($redis-&gt;zrangebyscore('set', 3, 5, ['withscores'=&gt;true]));echo '&lt;br&gt;';
34
35   //返回集合中指定区间内所有的值
36   print_r($redis-&gt;zrevrange('set', 1, 2));echo '&lt;br&gt;';
37   print_r($redis-&gt;zrevrange('set', 1, 2, true));echo '&lt;br&gt;';
38
39
40   //有序集合中指定值的socre增加
41   echo $redis-&gt;zscore('set', 'dog');echo '&lt;br&gt;';
42   $redis-&gt;zincrby('set', 2, 'dog');
43   echo $redis-&gt;zscore('set', 'dog');echo '&lt;br&gt;';
44
45   //移除score值介于min和max之间的元素
46   print_r($redis-&gt;zrange('set', 0, -1, true));echo '&lt;br&gt;';
47   print_r($redis-&gt;zremrangebyscore('set', 3, 4));echo '&lt;br&gt;';
48   print_r($redis-&gt;zrange('set', 0, -1, true));echo '&lt;br&gt;';
49
50   //结果
51   // 1
52   // 0
53   // 0
54   // 0
55   // 0
56   // Array ( =&gt; cat =&gt; fish =&gt; bird =&gt; dog )
57   // Array ( =&gt; 1 =&gt; 3 =&gt; 4 =&gt; 4 )
58   // 4
59   // 4
60   // Array ( =&gt; fish =&gt; bird =&gt; dog )
61   // 3
62   // Array ( =&gt; fish =&gt; bird =&gt; dog )
63   // Array ( =&gt; 3 =&gt; 4 =&gt; 4 )
64   // Array ( =&gt; bird =&gt; fish )
65   // Array ( =&gt; 4 =&gt; 3 )
66   // 4
67   // 6
68   // Array ( =&gt; 3 =&gt; 4 =&gt; 6 )
69   // 2
70   // Array ( =&gt; 6 ) </pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif"></span></div>
</div>
<p>&nbsp;</p>
<p>注:仅供个人学习,如果对您有所帮助,我很欣慰,对您造成误导,我很抱歉</p>
<div id="MySignature">------想要问问你敢不敢,像你说过的那样爱我......</div>

</div>
<div id="MySignature" role="contentinfo">
    纵然世间炎凉百态!我自依旧初心不改!!<br><br>
来源:https://www.cnblogs.com/phpk/p/10936278.html
頁: [1]
查看完整版本: PHP操作redis