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/>"; //
  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,保留制定区间内的元素

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

PHP操作redis之String(字符串)、List(列表)(一)的更多相关文章

  1. 1、使用ValueOperations操作redis(String字符串)

    文章来源:https://www.cnblogs.com/shiguotao-com/p/10559997.html 方法 c参数 s说明   void set(K key, V value); ke ...

  2. 【快学springboot】13.操作redis之String数据结构

    前言 在之前的文章中,讲解了使用redis解决集群环境session共享的问题[快学springboot]11.整合redis实现session共享,这里已经引入了redis相关的依赖,并且通过spr ...

  3. python操作redis之String操作

    # __author__ = 'STEVEN' import redis,time # 方式1,直接链接操作 # r = redis.Redis(host='192.168.43.22',port=6 ...

  4. 五:key关键字 string字符串 list列表 set集合 Zset有序集合

    key 1.keys 命令用于查找所有符合给定模式 pattern 的 key . keys *  查找所有的key返回一个列表 2.EXISTS xxx 检查是否有指定名字为xxx的key 有就返回 ...

  5. redis:String字符串类型(三)

    字符串拼接(如果key不存在则创建):append name " applesnt" 获取字符串的长度:strlen name 127.0.0.1:6379> set nam ...

  6. laravel操作Redis排序/删除/列表/随机/Hash/集合等方法全解

    Song • 3563 次浏览 • 0 个回复 • 2017年10月简介 Redis模块负责与Redis数据库交互,并提供Redis的相关API支持: Redis模块提供redis与redis.con ...

  7. Jedis操作redis(转)

    package org.jzkangta.jedis; import java.util.ArrayList; import java.util.HashMap; import java.util.I ...

  8. 【JAVA】使用 jedis操作redis——连接、存储数据、切库等

    本篇运用Java调用jedis包(jedis在线文档API ),做简单操作实例. 安装jedis 1. 2.9.0 jar 版本下载: jedis-2.9.0.jar 2. 新建项目,添加该驱动包 连 ...

  9. Redis学习笔记(二) ---- PHP操作Redis各数据类型

    Redis 一.使用PHP操作Redis存储系统中的各类数据类型方法 1.String(字符串)操作 <?php // 1. 实例化 $redis = new Redis; // 2. 连接 r ...

随机推荐

  1. 立即抢注我的免费1T云空间

    立即抢注我的免费1T云空间 在IDC行业中,有许多的免费空间,而真正的免费空间又能有多少?我是一个草根站长,说实话,为了寻找一个很好的免费空间,我在网上找了好多,几乎所有的免费空间都用过,但当网站运行 ...

  2. 【转】网络管理员必知之:IP地址划分

    1.IP地址分类         IP地址有四个段,包括网络标识和主机标识两部分:netid+hostid.         IP地址应用分为A.B.C三类,D.E类是保留和专用的.         ...

  3. linux 下通过过 hbase 的Java api 操作hbase

    hbase版本:0.98.5 hadoop版本:1.2.1 使用自带的zk 本文的内容是在集群中创建java项目调用api来操作hbase,主要涉及对hbase的创建表格,删除表格,插入数据,删除数据 ...

  4. 在NGUI中高效优化UIScrollView之UIWrapContent的简介以及使用

    前言: 1.我使用的NGUI版本为 v3.7.5,不知道老版的NGUI是否有UIWrapContent 这个脚本. 2.本文讲解主要以图片显示的例子为主,本文例子UIScrollView是水平方向,一 ...

  5. How to rename table name

    How to rename table name eg.  rename emp to emp01; see aslo: https://docs.oracle.com/javadb/10.8.3.0 ...

  6. PHP调优

    目录 php.ini 内存 Zend OPcache 文件上传 最长执行时间 处理会话 缓冲输出 真实路径缓存 php.ini PHP解释器在 php.ini 文件中配置和调优.web和cli使用的路 ...

  7. MapReduce Design Patterns(chapter 3 (part 1))(五)

    Chapter 3. Filtering Patterns 本章的模式有一个共同点:不会改变原来的记录.这种模式是找到一个数据的子集,或者更小,例如取前十条,或者很大,例如结果去重.这种过滤器模式跟前 ...

  8. facebook开源的代码审核工具phabricator

    主页地址:http://phabricator.org/

  9. Linux的CPU相关知识

    超线程和多线程的区别? 超线程从硬件层面理解,即一个CPU的部件(可以理解为核)同时执行多条指令,表现就是同时执行多个线程.多线程是软件层面的概念,比如CPU只有一个核,通过线程调度可以在一个时间段内 ...

  10. C对64位整数类型的支持

    在使用C语言过程中可能需要接触长整数类型,其中包括固定长度数据类型的声明.输入输出函数的标志符等细节,在此记录. int64_t 与 uint64_t C的标准只规定特定数据类型需要实现的最小长度,特 ...