目录
PHP-redis命令文档
首页 php教程 php手册 PHP-redis命令文档

PHP-redis命令文档

Jun 13, 2016 am 09:15 AM
key redis 命令 数据库 文档 本质

PHP-redis命令文档

  Redis本质上一个Key/Value数据库,与Memcached类似的NoSQL型数据库,但是他的数据可以持久化的保存在磁盘上,解决了服务重启后数据不丢失的问题,它的值可以是string(字符串)、list(列表)、sets(集合)或者是ordered sets(被排序的集合),所有的数据类型都具有push/pop、add/remove、执行服务端的并集、交集、两个sets集中的差别等等操作,这些操作都是具有原子性的,Redis还支持各种不同的排序能力

  Redis 2.0更是增加了很多新特性,如:提升了性能、增加了新的数据类型、更少的利用内存(AOF和VM)

  phpredis是php的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系

  以下是redis官方提供的命令使用技巧:

  Redis::__construct构造函数

  $redis = new Redis();

  connect, open 链接redis服务

  参数

  host: string,服务地址

  port: int,端口号

  timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)

  注: 在redis.conf中也有时间,默认为300

  ping 查看连接状态

  get 得到某个key的值(string值)

  如果该key不存在,return 特殊值 nil;如果 key 不是字符串类型,那么返回一个错误

  set 写入key 和 value(string值)

  在 Redis 2.6.12 版本以前, set命令总是返回 OK 。

  从 Redis 2.6.12 版本开始, set 在设置操作成功完成时,才返回 OK 。

  如果设置了 NX 或者 XX ,但因为条件没达到而造成设置操作未执行,那么命令返回空批量回复(NULL Bulk Reply)。

  setex 带生存时间的写入值

  将值 value 关联到 key ,并将 key 的生存时间设为 seconds (以秒为单位)。

  如果 key 已经存在, SETEX 命令将覆写旧值。

  这个命令类似于以下两个命令:

  SET key value

  EXPIRE key seconds # 设置生存时间

  不同之处是, SETEX 是一个原子性(atomic)操作,关联值和设置生存时间两个动作会在同一时间内完成,

  该命令在 Redis 用作缓存时,非常实用。

  #粒子

  $redis->setex(‘key’, 3600, ‘value’); // sets key → value, with 1h TTL.

  setnx 判断是否重复的,写入值

  #将 key 的值设为 value ,当且仅当 key 不存在。 若给定的 key 已经存在,则 SETNX 不做任何动作

  $redis->setnx(‘key’, ‘value’);

  $redis->setnx(‘key’, ‘value’);

  delete 删除指定key的值

  返回已经删除key的个数(长整数)

  $redis->delete(‘key1′, ‘key2′);

  $redis->delete(array(‘key3′, ‘key4′, ‘key5′));

  ttl

  得到一个key的生存时间

  persist

  移除生存时间到期的key

  如果key到期 true 如果不到期 false

  mset (redis版本1.1以上才可以用)

  同时给多个key赋值

  $redis->mset(array(‘key0′ => ‘value0′, ‘key1′ => ‘value1′));

  exists

  判断key是否存在。存在 true 不在 false

  $redis->exists(‘test’);

  incr, incrBy

  key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值

  $redis->incr(‘key1′);

  $redis->incrBy(‘key1′, 10);

  decr, decrBy

  做减法,使用方法同incr

  getMultiple

  传参

  由key组成的数组

  返回参数

  如果key存在返回value,不存在返回false

  $redis->set(‘key1′, ‘value1′);

  $redis->set(‘key2′, ‘value2′);

  $redis->set(‘key3′, ‘value3′);

  $redis->getMultiple(array(‘key1′, ‘key2′, ‘key3′));

  $redis->lRem(‘key1′, ‘A’, 2);

  $redis->lRange(‘key1′, 0, -1);#获取所有的列表

  list相关操作

  lPush

  $redis->lPush(key, value);

  在名称为key的list左边(头)添加一个值为value的 元素

  rPush

  $redis->rPush(key, value);

  在名称为key的list右边(尾)添加一个值为value的 元素

  lPushx/rPushx

  $redis->lPushx(key, value);

  在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加

  lPop/rPop

  $redis->lPop(‘key’);

  输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素

  blPop/brPop

  $redis->blPop(‘key1′, ‘key2′, 10);

  lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作

  lSize

  $redis->lSize(‘key’);

  返回名称为key的list有多少个元素

  lIndex, lGet

  $redis->lGet(‘key’, 0);

  返回名称为key的list中index位置的元素

  lSet

  $redis->lSet(‘key’, 0, ‘X’);

  给名称为key的list中index位置的元素赋值为value

  lRange, lGetRange

  $redis->lRange(‘key1′, 0, -1);

  返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)

  lTrim, listTrim

  $redis->lTrim(‘key’, start, end);

  截取名称为key的list,保留start至end之间的元素

  lRem, lRemove

  $redis->lRem(‘key’, ‘A’, 2);

  删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count

  lInsert

  在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1

  $redis->delete(‘key1′); $redis->lInsert(‘key1′, Redis::AFTER, ‘A’, ‘X’); $redis->lPush(‘key1′, ‘A’); $redis->lPush(‘key1′, ‘B’); $redis->lPush(‘key1′, ‘C’); $redis->lInsert(‘key1′, Redis::BEFORE, ‘C’, ‘X’);

  $redis->lRange(‘key1′, 0, -1);

  $redis->lInsert(‘key1′, Redis::AFTER, ‘C’, ‘Y’);

  $redis->lRange(‘key1′, 0, -1);

  $redis->lInsert(‘key1′, Redis::AFTER, ‘W’, ‘value’);

  rpoplpush

  返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部

  $redis->delete(‘x’, ‘y’);

  $redis->lPush(‘x’, ‘abc’); $redis->lPush(‘x’, ‘def’); $redis->lPush(‘y’, ’123′); $redis->lPush(‘y’, ’456′); // move the last of x to the front of y. var_dump($redis->rpoplpush(‘x’, ‘y’));

  var_dump($redis->lRange(‘x’, 0, -1));

  var_dump($redis->lRange(‘y’, 0, -1));

  string(3) “abc”

  array(1) { [0]=> string(3) “def” }

  array(3) { [0]=> string(3) “abc” [1]=> string(3) “456″ [2]=> string(3) “123″ }

  SET操作相关

  sAdd

  向名称为key的set中添加元素value,如果value存在,不写入,return false

  $redis->sAdd(key , value);

  sRem, sRemove

  删除名称为key的set中的元素value

  $redis->sAdd(‘key1′ , ‘set1′);

  $redis->sAdd(‘key1′ , ‘set2′);

  $redis->sAdd(‘key1′ , ‘set3′);

  $redis->sRem(‘key1′, ‘set2′);

  sMove

  将value元素从名称为srckey的集合移到名称为dstkey的集合

  $redis->sMove(seckey, dstkey, value);

  sIsMember, sContains

  名称为key的集合中查找是否有value元素,有ture 没有 false

  $redis->sIsMember(key, value);

  sCard, sSize

  返回名称为key的set的元素个数

  sPop

  随机返回并删除名称为key的set中一个元素

  sRandMember

  随机返回名称为key的set中一个元素,不删除

  sInter

  求交集

  sInterStore

  求交集并将交集保存到output的集合

  $redis->sInterStore(‘output’, ‘key1′, ‘key2′, ‘key3′)

  sUnion

  求并集

  $redis->sUnion(‘s0′, ‘s1′, ‘s2′);

  s0,s1,s2 同时求并集

  sUnionStore

  求并集并将并集保存到output的集合

  $redis->sUnionStore(‘output’, ‘key1′, ‘key2′, ‘key3′);

  sDiff

  求差集

  sDiffStore

  求差集并将差集保存到output的集合

  sMembers, sGetMembers

  返回名称为key的set的所有元素

  sort

  排序,分页等

  参数

  ‘by’ => ‘some_pattern_*’,

  ‘limit’ => array(0, 1),

  ‘get’ => ‘some_other_pattern_*’ or an array of patterns,

  ‘sort’ => ‘asc’ or ‘desc’,

  ‘alpha’ => TRUE,

  ‘store’ => ‘external-key’

  例子

  $redis->delete(‘s’); $redis->sadd(‘s’, 5); $redis->sadd(‘s’, 4); $redis->sadd(‘s’, 2); $redis->sadd(‘s’, 1); $redis->sadd(‘s’, 3);

  var_dump($redis->sort(‘s’)); // 1,2,3,4,5

  var_dump($redis->sort(‘s’, array(‘sort’ => ‘desc’))); // 5,4,3,2,1

  var_dump($redis->sort(‘s’, array(‘sort’ => ‘desc’, ‘store’ => ‘out’))); // (int)5

  string命令

  getSet

  返回原来key中的值,并将value写入key

  $redis->set(‘x’, ’42′);

  $exValue = $redis->getSet(‘x’, ‘lol’); // return ’42′, replaces x by ‘lol’

  $newValue = $redis->get(‘x’)’ // return ‘lol’

  append

  string,名称为key的string的值在后面加上value

  $redis->set(‘key’, ‘value1′);

  $redis->append(‘key’, ‘value2′);

  $redis->get(‘key’);

  getRange (方法不存在)

  返回名称为key的string中start至end之间的字符

  $redis->set(‘key’, ‘string value’);

  $redis->getRange(‘key’, 0, 5);

  $redis->getRange(‘key’, -5, -1);

  setRange (方法不存在)

  改变key的string中start至end之间的字符为value

  $redis->set(‘key’, ‘Hello world’);

  $redis->setRange(‘key’, 6, “redis”);

  $redis->get(‘key’);

  strlen

  得到key的string的长度

  $redis->strlen(‘key’);

  getBit/setBit

 

  返回2进制信息

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

redis集群模式怎么搭建 redis集群模式怎么搭建 Apr 10, 2025 pm 10:15 PM

Redis集群模式通过分片将Redis实例部署到多个服务器,提高可扩展性和可用性。搭建步骤如下:创建奇数个Redis实例,端口不同;创建3个sentinel实例,监控Redis实例并进行故障转移;配置sentinel配置文件,添加监控Redis实例信息和故障转移设置;配置Redis实例配置文件,启用集群模式并指定集群信息文件路径;创建nodes.conf文件,包含各Redis实例的信息;启动集群,执行create命令创建集群并指定副本数量;登录集群执行CLUSTER INFO命令验证集群状态;使

MySQL:世界上最受欢迎的数据库的简介 MySQL:世界上最受欢迎的数据库的简介 Apr 12, 2025 am 12:18 AM

MySQL是一种开源的关系型数据库管理系统,主要用于快速、可靠地存储和检索数据。其工作原理包括客户端请求、查询解析、执行查询和返回结果。使用示例包括创建表、插入和查询数据,以及高级功能如JOIN操作。常见错误涉及SQL语法、数据类型和权限问题,优化建议包括使用索引、优化查询和分表分区。

redis数据怎么清空 redis数据怎么清空 Apr 10, 2025 pm 10:06 PM

如何清空 Redis 数据:使用 FLUSHALL 命令清除所有键值。使用 FLUSHDB 命令清除当前选定数据库的键值。使用 SELECT 切换数据库,再使用 FLUSHDB 清除多个数据库。使用 DEL 命令删除特定键。使用 redis-cli 工具清空数据。

为什么要使用mysql?利益和优势 为什么要使用mysql?利益和优势 Apr 12, 2025 am 12:17 AM

选择MySQL的原因是其性能、可靠性、易用性和社区支持。1.MySQL提供高效的数据存储和检索功能,支持多种数据类型和高级查询操作。2.采用客户端-服务器架构和多种存储引擎,支持事务和查询优化。3.易于使用,支持多种操作系统和编程语言。4.拥有强大的社区支持,提供丰富的资源和解决方案。

redis指令怎么用 redis指令怎么用 Apr 10, 2025 pm 08:45 PM

使用 Redis 指令需要以下步骤:打开 Redis 客户端。输入指令(动词 键 值)。提供所需参数(因指令而异)。按 Enter 执行指令。Redis 返回响应,指示操作结果(通常为 OK 或 -ERR)。

redis怎么读取队列 redis怎么读取队列 Apr 10, 2025 pm 10:12 PM

要从 Redis 读取队列,需要获取队列名称、使用 LPOP 命令读取元素,并处理空队列。具体步骤如下:获取队列名称:以 "queue:" 前缀命名,如 "queue:my-queue"。使用 LPOP 命令:从队列头部弹出元素并返回其值,如 LPOP queue:my-queue。处理空队列:如果队列为空,LPOP 返回 nil,可先检查队列是否存在再读取元素。

redis怎么使用锁 redis怎么使用锁 Apr 10, 2025 pm 08:39 PM

使用Redis进行锁操作需要通过SETNX命令获取锁,然后使用EXPIRE命令设置过期时间。具体步骤为:(1) 使用SETNX命令尝试设置一个键值对;(2) 使用EXPIRE命令为锁设置过期时间;(3) 当不再需要锁时,使用DEL命令删除该锁。

redis怎么读源码 redis怎么读源码 Apr 10, 2025 pm 08:27 PM

理解 Redis 源码的最佳方法是逐步进行:熟悉 Redis 基础知识。选择一个特定的模块或功能作为起点。从模块或功能的入口点开始,逐行查看代码。通过函数调用链查看代码。熟悉 Redis 使用的底层数据结构。识别 Redis 使用的算法。

See all articles