备注:redis及phpredis扩展安装请查看:PHP典型功能与Laravel5框架开发学习笔记

redis具有原子性,所以在高并发情况下确保数据的一致性

一、连接

$redis = new Redis();
$redis->connect('127.0.0.1', );

一、key-value

1、选择数据库

$redis->select();

2、设置:set

$redis->set('name', 'jimu');

3、获取:get

$redis->get('name');

4、删除:del

$redis->del('name');

5、判断键是否存在:exists

$redis->exists('name');

6、如果键值不存在则设置,存在则不做任何操作:setnx(SET if Not eXists)

$redis->setnx('age', );

7、自增、自减:incr、decr、incrBy、decrBy

$key = 'libdata:pv';
$redis->incrBy($key, );
$key = 'libdata:pv';
$redis->decrBy($key, );

8、键名一般按照模块从大到小来设计,以冒号分隔,如user:info:1,这样的好处是层级关系清晰,客户端显示如下

二、hash,以下方法和key-value的方法一一对应

1、hSet

$redis->hSet('user:a', 'age', 20);

2、hGet

$redis->hGet('user:a', 'age');

3、hDel

$redis->hDel('user:a', 'age');

4、hExists

$redis->hExists('user:a', 'age');

5、hSetNx

$redis->hSetNx('user:a', 'age', 23);

三、list

1、lPush、rPush

//    先队列头添加数据
$redis->lPush('list', );
// 先队列尾添加数据
$redis->rPush('list', );

2、lPop、rPop

//    先队列头取出数据
$redis->lPop('list');
// 先队列尾取出数据
$redis->rPop('list');

3、lSet:给指定的索引赋值

$redis->lSet('list', , );

4、lLen:获取数组的长度

$len = $redis->lLen('list');

5、lRange:获取索引从1到索引3的值

$res = $redis->lRange('list', , );
var_dump($res);

6、lTrim:删除选中范围外的数据,返回bool值

$redis->lTrim('list', , );

执行前数据:

执行后:

四、set:特点:无序、键值不重复

1、sAdd:

$redis->sAdd('fruit', 'apple');
$redis->sAdd('fruit', 'banana');
$redis->sAdd('fruit', 'watermelon');
$redis->sAdd('fruit', 'watermelon');

2、sMembers:返回集合的所有成员

$res = $redis->sMembers('fruit');

3、sCard:返回成员个数

$num = $redis->sCard('fruit');

4、sPop:随机取出一个成员

$fruit = $redis->sPop('fruit');

5、sDiff:求差集,及第一个集合中有而其他集合中没有的成员

$fruit1 = $redis->sAdd('fruit:1', 'apple');
$fruit1 = $redis->sAdd('fruit:1', 'banana'); $redis->sAdd('fruit:2', 'banana');
$redis->sAdd('fruit:2', 'watermelon'); $diff = $redis->sDiff('fruit:1', 'fruit:2');
var_dump($diff);

五、发布订阅

1、监听者代码:sub.php

<?php
// 监听者
$redis = new Redis();
$redis->connect('127.0.0.1', );
echo "reading c1 c2...\n";
$redis->setOption(Redis::OPT_READ_TIMEOUT, -); // 设置不超时
$redis->subscribe(['c1', 'c2'], function(Redis $instance, $channel, $message) {
echo "recieve message from {$channel}: {$message}\n";
});

2、发布者代码:pub.php

<?php
$redis = new Redis();
$redis->connect('127.0.0.1', ); $num = $redis->publish('c1', 'hi, c1');
// 返回监听者的个数
echo "client:{$num}\n"; $num = $redis->publish('c2', 'hi, c2');
// 返回监听者的个数
echo "client:{$num}\n";

3、执行及显示:

3.1、先开启监听者:

3.2、发布消息:

3.3、监听者收到消息:

redis(以php代码为例)的更多相关文章

  1. 30个php操作redis经常用法代码样例

    这篇文章主要介绍了30个php操作redis经常用法代码样例,本文事实上不止30个方法,能够操作string类型.list类型和set类型的数据,须要的朋友能够參考下 redis的操作非常多的,曾经看 ...

  2. Java连接redis的使用演示样例

    Java连接redis的使用演示样例 Redis是开源的key-value存储工具,redis通经常使用来存储结构化的数据,由于redis的key能够包括String.hash.listset和sor ...

  3. JAVA各种OOM代码样例及解决方法

    周末了,觉得我还有很多作业没有写,针对目前大家对OOM的类型不太熟悉,那么我们来总结一下各种OOM出现的情况以及解决方法. 我们把各种OOM的情况列出来,然后逐一进行代码编写复现和提供解决方法. 1. ...

  4. 2020JAVA最新应对各种OOM代码样例及解决办法

    引言 作者:黄青石 链接:https://www.cnblogs.com/huangqingshi/p/13336648.html?utm_source=tuicool&utm_medium= ...

  5. 33个超级有用必须要收藏的PHP代码样例

    作为一个正常的程序员,会好几种语言是十分正常的,相信大部分程序员也都会编写几句PHP程序,如果是WEB程序员,PHP一定是必备的,即使你没用开发过大型软件项目,也一定多少了解它的语法. 在PHP的流行 ...

  6. java servlet 代码样例 (demo)

    今天又搞了下jsp +servlet 的代码样例,感觉虽然搭了好多次,可是每次还是不记得那些参数,都要去网上搜索,索性自己把这次的简单demo给记录下来,供下次使用的时候直接复制吧. 这个web逻辑 ...

  7. paip.输入法编程--英文ati化By音标原理与中文atiEn处理流程 python 代码为例

    paip.输入法编程--英文ati化By音标原理与中文atiEn处理流程 python 代码为例 #---目标 1. en vs enPHati 2.en vs enPhAtiSmp 3.cn vs ...

  8. Openresty编写Lua代码一例

    1.前段时间纠结了很久,一直弄不清lua和tomcat的联系.一直认为是lua调用tomcat的接口才可使用,后面才明白过来,进入了一个误区,lua本身就是一门独立的脚本语言.在openresty里面 ...

  9. zookeeper实战:SingleWorker代码样例

    我们需要一个“单点worker”系统,此系统来确保系统中定时任务在分布式环境中,任意时刻只有一个实例处于活跃:比如,生产环境中,有6台机器支撑一个应用,但是一个应用中有30个定时任务,这些任务有些必须 ...

  10. 代码优化:Java编码技巧之高效代码50例

    出处:  Java编码技巧之高效代码50例 1.常量&变量 1.1.直接赋值常量值,禁止声明新对象 直接赋值常量值,只是创建了一个对象引用,而这个对象引用指向常量值. 反例: Long i = ...

随机推荐

  1. E20170517-gg

    jaw  n. 下巴; 颌; indicator n. 指示器; gator  n. 短吻鳄; median  n. 中位数; 中线; [数] 中值;

  2. java多线程下模拟抢票

    我们设置三个对象分别同时抢20张票,利用多线程实现. public class Web123506 implements Runnable{ private int ticteksNums=20;// ...

  3. 版本管理工具SVN的使用

    一.安装服务器端和客户端 需要的软件: 1.服务器端:SlikSVN,下载传送门:http://www.sliksvn.com/en/download/ 2.客户端:“乌龟”,下载传送门:http:/ ...

  4. 项目Alpha版本发布

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2 这个作业的要求在哪里 https://edu.cnbl ...

  5. JavaScript--DOM创建元素节点createElement

    创建元素节点createElement createElement()方法可创建元素节点.此方法可返回一个 Element 对象. 语法: document.createElement(tagName ...

  6. [ZOJ1961]Let it Bead

    Description "Let it Bead" company is located upstairs at 700 Cannery Row in Monterey, CA. ...

  7. LightOj 1220 Mysterious Bacteria

    题目大意: 给出一个x,求满足x = b^p,p最大是多少? 解题思路: x可以表示为:x = p1^e1 * p2^e2 * p3^e3 ....... * pn^en. p = gcd (e1,e ...

  8. QT5每日一学(五)QT布局管理器

    Qt中的布局管理器主要包括 QBoxLayout基本布局管理器 QGridLayout栅格布局管理器 QFormLayout窗体布局管理器 而基本布局管理器又分为QHBoxLayout水平布局管理器和 ...

  9. 题解报告:hdu 1032 The 3n + 1 problem(克拉兹问题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1032 Problem Description Problems in Computer Science ...

  10. 题解报告:hdu 1261 字串数

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1261 Problem Description 一个A和两个B一共可以组成三种字符串:"ABB ...