PHP操作redis之String(字符串)、List(列表)(一…

2018-06-22 05:40:24来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

Redis 简介

Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。

Redis 与其他 key – value 缓存产品有以下三个特点:

  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  • Redis支持数据的备份,即master-slave模式的数据备份。

Redis 优势

  • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
  • 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
  • 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
  • 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

 

Redis与其他key-value存储有什么不同?

  • Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。

  • Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。

下面首先来看看PHP操作redis的string(字符串)和List(列表):

 1 //操作redis
 2 $redis = new \Redis();
 3 $redis->connect('127.0.0.1',6379);
 4 $redis_con =  $redis->ping();
 5 if( $redis_con != "+PONG"){
 6     echo "redis连接出错!";
 7     exit();
 8 }
 9 
10 //    Strng(字符串):
11 //   ╔ ╔═╗  ╗╠╦═╗╔═╩══╗╔═╮╔═╮╔══╠═╗
12 //   ╠╔═╗═╗ ║║║  ║═══╗╯╚╚╰╚╚ ║  ║ ║
13 //   ║╚═╝═╝ ║╯╠═╗╰  ╔╝ ╔╯ ══╠╚══╠═╯
14 //   ║╚═╦╠╝╚╯ ║     ╰╮ ║║ ╗ ║╔══╠═╗
15 //   ╠╔ ║╠╗ ║ ╠═╗╚═══╠╝║║ ╰═║║  ║ ║
16 //   ╚╚═╝╝╯ ╰╝╚  ╰═══╝  ╝ ╚═╝╚══╚═╯
17 $redis->set('name', 'zhangxiansheng');
18 $redis->set('age', '24');
19 $redis->set('addr', '南京');
20 $redis->mset(array('QQ'=>'123456789','phone'=>15950562931,'sex'=>'男','job'=>'PHP'));
21 $redis->incr('age');                    //age的值加上1   25
22 $redis->decr('age');                    //age的值减去1   23
23 $redis->incrBy('age','5');              //age的值加上指定的值 5   29
24 $redis->decrBy('age','5');              //age的值加上指定的值 5   19
25 $redis->append('name','先生');
26 $all = $redis->mget(array('name','age','addr','QQ','phone','sex','job'));
27 //获取key的值
28 $redis->exists('name');                  //测试指定key是否存在  存在返回1
29 $redis->del('name','age','addr');        //del key1 key2 ..... keyN    删除给定的key
30 $redis->rename('name','nameX');          //rename oldkey newkey        改名字
31 $redis->expire('QQ','20');               //为key指定过期时间
32 $redis->ttl('QQ');                       //    返回剩余key的过期秒数
33 $redis->move('phone',1);             //将key从当前数据库移动到指定数据库  1代表的是第二个数据库
34 echo $redis->get('name');echo "<br/>";          //zhangxiansheng先生
35 echo $redis->get('age'); echo "<br/>";          //24
36 echo $redis->get('addr'); echo "<br/>";         //南京
37 dump($all);echo"<br />";
38     //array (size=7)
39     //  0 => string 'zhangxiansheng先生' (length=20)
40     //  1 => string '24' (length=2)
41     //  2 => string '南京' (length=6)
42     //  3 => string '123456789' (length=9)
43     //  4 => string '15950562931' (length=11)
44     //  5 => string '男' (length=3)
45     //  6 => string 'PHP' (length=3)
46 
47 $redis->set('name',"zhangsir");
48 $redis->get('name');                   //zhang sir  覆盖掉原来的   张先生
49 
50  //    List(列表)
51  //   ╔ ╔═╗  ╗╠╦═╗╔╦═╗ ╗╔══╠═╗
52  //   ╠╔═╗═╗ ║║║   ╠═╗╗║   ║  
53  //   ║╚═╝═╝ ║╯╠═╗ ║ ║║║╚══╠═╝
54  //   ║╚═╦╠╝╚╯ ║   ║║║║║╚═╦╩═╝
55  //   ╠╔ ║╠╗ ║ ╠═╗ ╝║║╝║╭╦╝═╦╯
56  //   ╚╚═╝╝╯ ╰╝╚  ╚══╯ ╝╚╚═╯╰╝
57 $redis->select(1);                      //    选择数据库
58 $redis->keys('*');                      //  获取所有的key
59 $redis->flushDB();                      //    删除当前数据库所有的key
60 $redis->lPush('newUsers','user1');      //     \
61 $redis->lPush('newUsers','user2');      //     |=>  在key对应list的头部添加字符串元素
62 $redis->lPush('newUsers','user3');      //     /
63 
64 $redis->rPush('newUsers','user4');      //        在key对应list的尾部添加字符串元素
65 
66 $redis->lRange('newUsers',0,2);         //      返回制定区间内的元素,下表从0开始
67 
68     //  array (size=3)
69     //  0 => string 'user3' (length=5)
70     //  1 => string 'user2' (length=5)
71     //  2 => string 'user1' (length=5)
72     //  3 => string 'user4' (length=5)
73 
74 $redis->rPop('newUsers');               //从list的尾部删除元素,并返回删除元素
75 $redis->lPop('newUsers');               //从list的头部删除元素,并返回删除元素
76 $redis->lLen('newUsers');               //对应list的长度,key不存在的返回0,如果key对应类型不是list 返回错误
77 $redis->lTrim('newUsers',0,2);          //截取list,保留制定区间内的元素

原文地址:张先生的博客,更多文章请 点击这里

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:php 开源项目汇总

下一篇:记一次学习PHP中的错误