redis(以php代码为例)
备注: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代码为例)的更多相关文章
- 30个php操作redis经常用法代码样例
这篇文章主要介绍了30个php操作redis经常用法代码样例,本文事实上不止30个方法,能够操作string类型.list类型和set类型的数据,须要的朋友能够參考下 redis的操作非常多的,曾经看 ...
- Java连接redis的使用演示样例
Java连接redis的使用演示样例 Redis是开源的key-value存储工具,redis通经常使用来存储结构化的数据,由于redis的key能够包括String.hash.listset和sor ...
- JAVA各种OOM代码样例及解决方法
周末了,觉得我还有很多作业没有写,针对目前大家对OOM的类型不太熟悉,那么我们来总结一下各种OOM出现的情况以及解决方法. 我们把各种OOM的情况列出来,然后逐一进行代码编写复现和提供解决方法. 1. ...
- 2020JAVA最新应对各种OOM代码样例及解决办法
引言 作者:黄青石 链接:https://www.cnblogs.com/huangqingshi/p/13336648.html?utm_source=tuicool&utm_medium= ...
- 33个超级有用必须要收藏的PHP代码样例
作为一个正常的程序员,会好几种语言是十分正常的,相信大部分程序员也都会编写几句PHP程序,如果是WEB程序员,PHP一定是必备的,即使你没用开发过大型软件项目,也一定多少了解它的语法. 在PHP的流行 ...
- java servlet 代码样例 (demo)
今天又搞了下jsp +servlet 的代码样例,感觉虽然搭了好多次,可是每次还是不记得那些参数,都要去网上搜索,索性自己把这次的简单demo给记录下来,供下次使用的时候直接复制吧. 这个web逻辑 ...
- paip.输入法编程--英文ati化By音标原理与中文atiEn处理流程 python 代码为例
paip.输入法编程--英文ati化By音标原理与中文atiEn处理流程 python 代码为例 #---目标 1. en vs enPHati 2.en vs enPhAtiSmp 3.cn vs ...
- Openresty编写Lua代码一例
1.前段时间纠结了很久,一直弄不清lua和tomcat的联系.一直认为是lua调用tomcat的接口才可使用,后面才明白过来,进入了一个误区,lua本身就是一门独立的脚本语言.在openresty里面 ...
- zookeeper实战:SingleWorker代码样例
我们需要一个“单点worker”系统,此系统来确保系统中定时任务在分布式环境中,任意时刻只有一个实例处于活跃:比如,生产环境中,有6台机器支撑一个应用,但是一个应用中有30个定时任务,这些任务有些必须 ...
- 代码优化:Java编码技巧之高效代码50例
出处: Java编码技巧之高效代码50例 1.常量&变量 1.1.直接赋值常量值,禁止声明新对象 直接赋值常量值,只是创建了一个对象引用,而这个对象引用指向常量值. 反例: Long i = ...
随机推荐
- hdu4888 Redraw Beautiful Drawings(最大流)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4888 题意:给一个矩阵没行的和和每列的和,问能否还原矩阵,如果可以还原解是否唯一,若唯一输出该矩阵. ...
- 【黑金教程笔记之004】【建模篇】【Lab 03 消抖模块之一】—笔记
设计思路: (1) 一旦检测到按键资源按下(从高电平到低电平),“电平检测模块”就会拉高H2L_Sig电平,然后拉低. (2) “10ms延迟模块”检测到H2L_Sig高电平, ...
- 身份认证系统(四)OAuth2运行流程
上一节介绍过什么是OAuth2,这节准备用生动的事例来告诉大家OAuth2运行的流程. 我们来想这样一个场景:假设我们有一个叫做万方网盘的服务是用来帮助用户存储论文文档的,我们向外提供了符合OAuth ...
- Access operations
Access operations Accessing elements inside tensors Suppose we have the following tensors: > t = ...
- Android上的进程通信(IPC)机制
Interprocess Communication Android offers a mechanism for interprocess communication (IPC) using rem ...
- this关键字的构造方法的使用
package com.wh.Object3; public class this_Demo { private String name; private double price; private ...
- jquery + ajax 实现多条件查询
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="JquerySort.aspx. ...
- 有关HTML版本
先说说HTML的简史:从HTML1.0~2.0(1989~1991)>HTML3(1995)>HTML4(1998)>HTML4.01(1999)>XHTML1.0(2001) ...
- Objective-C Properties
Objective-C Properties Apple introduced properties, a combination of new compiler directivesand a ne ...
- Farseer.net轻量级ORM开源框架 V1.x 入门篇:表实体类映射
导航 目 录:Farseer.net轻量级ORM开源框架 目录 上一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:数据库上下文 下一篇:Farseer.net轻量级ORM开源框 ...