备注: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. NOIp2013 车站分级 【拓扑排序】By cellur925

    题目传送门 我们注意到,题目中说:如果这趟车次停靠了火车站 x,则始发站.终点站之间所有级别大于等于火车站x的都必须停靠.有阶级关系,满满的拓扑排序氛围.但是,如果我们按大于等于的关系连,等于的情况就 ...

  2. HTML中a标签自动识别电话、邮箱

    HTML中a标签自动识别电话.邮箱 联系电话:<a href="tel:010-88888888">010-88888888</a><br> 联 ...

  3. 我的spring cloud项目历程(2018.3~2018.9)

    前言 今天是9月17日,趁着山竹的临幸,得以在家里舒适的办公.项目从3月底开始,至今刚好半年.抽几十分钟,总结下半年的历程.对后面的项目,应该也有一点帮助吧. 学习前的七个问题 项目开始前,由于某些特 ...

  4. 超级实用的VSCode插件,帮你大幅提高工作效率

    Visual Studio Code是一个轻量级但功能强大的源代码编辑器,可在桌面上运行,适用于Windows,macOS和Linux. 它内置了对JavaScript,TypeScript和Node ...

  5. poj 1664 放苹果 递归

    题目链接: http://poj.org/problem?id=1664 题目描述: 有n个苹果,m个盒子,盒子和苹果都没有顺序,盒子可以为空,问:有多少种放置方式? 解题思路: 当前有n个苹果,m个 ...

  6. 水题 Codeforces Round #306 (Div. 2) A. Two Substrings

    题目传送门 /* 水题:遍历一边先找AB,再BA,再遍历一边先找BA,再AB,两种情况满足一种就YES */ #include <cstdio> #include <iostream ...

  7. Android偏好设置(6)应用和监听各偏好参数

    Reading Preferences By default, all your app's preferences are saved to a file that's accessible fro ...

  8. zoj3699Dakar Rally

    链接 开两个队列 一个维护价格从大到小用来每次更新买油的价格 让每次都加满 如果当前价格比队列里的某价格低的话就更新 另开以优先队列维护价格由小到大 来更新此时用的油是什么油价的 并减掉 #inclu ...

  9. 外文翻译 《How we decide》赛场上的四分卫

    本书导言翻译 为了能看懂这一章,先做了如下的功课: 百度百科 四分卫 国家橄榄球联盟中文站 在2002年超级碗赛场上,比赛的时间仅剩80秒,两队比分持平.新英格兰爱国者队于17码的位置执球,他们的对手 ...

  10. ssm(Spring、Springmvc、Mybatis)实战之淘淘商城-第四天(非原创)

    文章大纲 一.课程介绍二.今日内容介绍三.参考资料下载四.参考文章 一.课程介绍 一共14天课程(1)第一天:电商行业的背景.淘淘商城的介绍.搭建项目工程.Svn的使用.(2)第二天:框架的整合.后台 ...