PHP操作redis之String(字符串)、List(列表)(一)
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(列表):
//操作redis
$redis = new \Redis();
$redis->connect('127.0.0.1',6379);
$redis_con = $redis->ping();
if( $redis_con != "+PONG"){
echo "redis连接出错!";
exit();
} // Strng(字符串):
// ╔ ╔═╗ ╗╠╦═╗╔═╩══╗╔═╮╔═╮╔══╠═╗
// ╠╔═╗═╗ ║║║ ║═══╗╯╚╚╰╚╚ ║ ║ ║
// ║╚═╝═╝ ║╯╠═╗╰ ╔╝ ╔╯ ══╠╚══╠═╯
// ║╚═╦╠╝╚╯ ║ ╰╮ ║║ ╗ ║╔══╠═╗
// ╠╔ ║╠╗ ║ ╠═╗╚═══╠╝║║ ╰═║║ ║ ║
// ╚╚═╝╝╯ ╰╝╚ ╰═══╝ ╝ ╚═╝╚══╚═╯
$redis->set('name', 'zhangxiansheng');
$redis->set('age', '24');
$redis->set('addr', '南京');
$redis->mset(array('QQ'=>'123456789','phone'=>15950562931,'sex'=>'男','job'=>'PHP'));
$redis->incr('age'); //age的值加上1 25
$redis->decr('age'); //age的值减去1 23
$redis->incrBy('age','5'); //age的值加上指定的值 5 29
$redis->decrBy('age','5'); //age的值加上指定的值 5 19
$redis->append('name','先生');
$all = $redis->mget(array('name','age','addr','QQ','phone','sex','job'));
//获取key的值
$redis->exists('name'); //测试指定key是否存在 存在返回1
$redis->del('name','age','addr'); //del key1 key2 ..... keyN 删除给定的key
$redis->rename('name','nameX'); //rename oldkey newkey 改名字
$redis->expire('QQ','20'); //为key指定过期时间
$redis->ttl('QQ'); // 返回剩余key的过期秒数
$redis->move('phone',1); //将key从当前数据库移动到指定数据库 1代表的是第二个数据库
echo $redis->get('name');echo "<br/>"; //zhangxiansheng先生
echo $redis->get('age'); echo "<br/>"; //
echo $redis->get('addr'); echo "<br/>"; //南京
dump($all);echo"<br />";
//array (size=7)
// 0 => string 'zhangxiansheng先生' (length=20)
// 1 => string '24' (length=2)
// 2 => string '南京' (length=6)
// 3 => string '123456789' (length=9)
// 4 => string '15950562931' (length=11)
// 5 => string '男' (length=3)
// 6 => string 'PHP' (length=3) $redis->set('name',"zhangsir");
$redis->get('name'); //zhang sir 覆盖掉原来的 张先生 // List(列表)
// ╔ ╔═╗ ╗╠╦═╗╔╦═╗ ╗╔══╠═╗
// ╠╔═╗═╗ ║║║ ╠═╗╗║ ║
// ║╚═╝═╝ ║╯╠═╗ ║ ║║║╚══╠═╝
// ║╚═╦╠╝╚╯ ║ ║║║║║╚═╦╩═╝
// ╠╔ ║╠╗ ║ ╠═╗ ╝║║╝║╭╦╝═╦╯
// ╚╚═╝╝╯ ╰╝╚ ╚══╯ ╝╚╚═╯╰╝
$redis->select(1); // 选择数据库
$redis->keys('*'); // 获取所有的key
$redis->flushDB(); // 删除当前数据库所有的key
$redis->lPush('newUsers','user1'); // \
$redis->lPush('newUsers','user2'); // |=> 在key对应list的头部添加字符串元素
$redis->lPush('newUsers','user3'); // / $redis->rPush('newUsers','user4'); // 在key对应list的尾部添加字符串元素 $redis->lRange('newUsers',0,2); // 返回制定区间内的元素,下表从0开始 // array (size=3)
// 0 => string 'user3' (length=5)
// 1 => string 'user2' (length=5)
// 2 => string 'user1' (length=5)
// 3 => string 'user4' (length=5) $redis->rPop('newUsers'); //从list的尾部删除元素,并返回删除元素
$redis->lPop('newUsers'); //从list的头部删除元素,并返回删除元素
$redis->lLen('newUsers'); //对应list的长度,key不存在的返回0,如果key对应类型不是list 返回错误
$redis->lTrim('newUsers',0,2); //截取list,保留制定区间内的元素
PHP操作redis之String(字符串)、List(列表)(一)的更多相关文章
- 1、使用ValueOperations操作redis(String字符串)
文章来源:https://www.cnblogs.com/shiguotao-com/p/10559997.html 方法 c参数 s说明 void set(K key, V value); ke ...
- 【快学springboot】13.操作redis之String数据结构
前言 在之前的文章中,讲解了使用redis解决集群环境session共享的问题[快学springboot]11.整合redis实现session共享,这里已经引入了redis相关的依赖,并且通过spr ...
- python操作redis之String操作
# __author__ = 'STEVEN' import redis,time # 方式1,直接链接操作 # r = redis.Redis(host='192.168.43.22',port=6 ...
- 五:key关键字 string字符串 list列表 set集合 Zset有序集合
key 1.keys 命令用于查找所有符合给定模式 pattern 的 key . keys * 查找所有的key返回一个列表 2.EXISTS xxx 检查是否有指定名字为xxx的key 有就返回 ...
- redis:String字符串类型(三)
字符串拼接(如果key不存在则创建):append name " applesnt" 获取字符串的长度:strlen name 127.0.0.1:6379> set nam ...
- laravel操作Redis排序/删除/列表/随机/Hash/集合等方法全解
Song • 3563 次浏览 • 0 个回复 • 2017年10月简介 Redis模块负责与Redis数据库交互,并提供Redis的相关API支持: Redis模块提供redis与redis.con ...
- Jedis操作redis(转)
package org.jzkangta.jedis; import java.util.ArrayList; import java.util.HashMap; import java.util.I ...
- 【JAVA】使用 jedis操作redis——连接、存储数据、切库等
本篇运用Java调用jedis包(jedis在线文档API ),做简单操作实例. 安装jedis 1. 2.9.0 jar 版本下载: jedis-2.9.0.jar 2. 新建项目,添加该驱动包 连 ...
- Redis学习笔记(二) ---- PHP操作Redis各数据类型
Redis 一.使用PHP操作Redis存储系统中的各类数据类型方法 1.String(字符串)操作 <?php // 1. 实例化 $redis = new Redis; // 2. 连接 r ...
随机推荐
- js实现查找字符串出现最多的字符和次数
代码如下: <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset=" ...
- .net core系列之《.net core中使用集成IDistributedCache接口的Redis和MongoDB实现分布式缓存》
分布式的缓存可以提高性能和可伸缩性的 ASP.NET Core 应用程序,尤其是托管在云中或服务器场中时. 什么是分布式的缓存 分布式的缓存由多个应用程序服务器共享,缓存中的信息不存储在单独的 Web ...
- auto_ptr与shared_ptr ZZ
http://blog.csdn.net/rogeryi/article/details/1442700 Part(1) 这篇文章试图说明如何使用auto_ptr和shared_ptr,从而使得动态分 ...
- CSS3 transition介绍
transition从效果上看是一种平滑过渡的动画,本质上是在线性时间内将属性从开始值过渡到结束值.例如获得焦点,点击鼠标等动作导致CSS属性值的变化是瞬间完成的,感觉有点生硬.用transition ...
- Asp.Net MVC Identity 2.2.1 使用技巧(七)
创建角色管理相关视图 1.添加视图 打开RolesAdminController.cs 将鼠标移动到public ActionResult Index()上 右键>添加视图 系统会弹出 ...
- 毫秒级百万数据分页存储过程(mssql)
/****** Object: StoredProcedure [dbo].[up_Page2005] Script Date: 11/28/2013 17:10:47 ******/ SET ANS ...
- iOS亮屏解锁命令【iOS自动化测试】--使用ssh
前提:iOS越狱手机一个 越狱方法:使用pp助手, 爱思助手等 1.从Cydia安装以下软件: AppSync for iOSx(可安装破解软件).afc2add补丁(可访问整个iOS设备的系统文件) ...
- 中间人攻击利用框架bettercap测试
0x00前言 上篇提到内网渗透很有趣,这次就从一款新工具说起: bettercap 0x01简介 bettercap可用来实现各种中间人攻击,模块化,便携.易扩展 0x02特点 提到中间人攻击,最知名 ...
- webpack中热模块更新
Hot Module Replacement,热模块更新,很多时候会简写成HMR. "scripts": { "start": "webpack-de ...
- [19/04/19-星期五] Java的动态性_脚本(Script,脚本)引擎执行JavaScript代码
一.概念 Java脚本引擎是jdk 6.0之后的新功能. 使得Java应用程序可以通过一套固定的接口与各种脚本引擎交互,从而达到在Java平台上调用各种脚本语言的目的. Java脚本API是连接Jav ...