备注: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. bzoj 4176: Lucas的数论【莫比乌斯反演+杜教筛】

    首先由这样一个结论: \[ d(ij)=\sum_{p|i}\sum_{q|j}[gcd(p,q)==1] \] 然后推反演公式: \[ \sum_{i=1}^{n}\sum_{j=1}^{n}\su ...

  2. 查找MySQL和 SQL sever data

    MySql SQL server

  3. 关于Http的小常识(转载,仅供参考)

    HTTP请求头提供了关于请求,响应或者其他的发送实体的信息.HTTP的头信息包括通用头.请求头.响应头和实体头四个部分.每个头域由一个域名,冒号(:)和域值三部分组成. 通用头标:即可用于请求,也可用 ...

  4. [Usaco2017 Open]Modern Art 2

    Description Having become bored with standard 2-dimensional artwork (and also frustrated at others c ...

  5. 离散化+线段树/二分查找/尺取法 HDOJ 4325 Flowers

    题目传送门 题意:给出一些花开花落的时间,问某个时间花开的有几朵 分析:这题有好几种做法,正解应该是离散化坐标后用线段树成端更新和单点询问.还有排序后二分查找询问点之前总花开数和总花凋谢数,作差是当前 ...

  6. Service官方教程(3)Bound Services

    Bound Services 1.In this document The Basics Creating a Bound Service Extending the Binder class Usi ...

  7. shell 调试 `<<' is not matched

    我的这段脚本,验证数据库连接是否正常: #! /bin/sh...while ..do....sqlplus $user/ $passwd@$sid  <<!quit;! ... 单独执行 ...

  8. [转]Getting Started with ASP.NET Web API 2 (C#)

    http://www.asp.net/web-api 本文转自:http://www.asp.net/web-api/overview/getting-started-with-aspnet-web- ...

  9. vue.js学习参考手册

    参考手册 示例:www.51siyuan.cn/161.html

  10. sqlServer备份和还原语句

    数据库备份语句和还原语句: --完整备份 Backup Database xxx To disk=’G:\Backup\xxx.bak’ --查看物理路径 restore filelistonly f ...