备注: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、监听者收到消息:

最新文章

  1. C++ version the delaunay triangulation
  2. apk瘦身(包大小优化)
  3. 华为OJ:字符串合并处理
  4. 广州大学华软软件学院——NA视频下载
  5. shell脚本查看网络配置
  6. AIM Tech Round 3 (Div. 2) B 数学+贪心
  7. dockerfile语法
  8. 201521123099 《Java程序设计》第2周学习总结
  9. 杂谈--DML触发器学习
  10. 初学者易上手的SSH-struts2 04值栈与ognl表达式
  11. navicat for sqlite 11.1.12 patch 永久试用 不报毒
  12. CommonJS,AMD,RequireJS的区别
  13. JavaScript语言学习中的注意事项
  14. java的制作&quot;时间账本&quot;
  15. 一梦江湖费六年——QQ群聊天分析
  16. 拖放排序插件Sortable.js 兼容好及功能全个人觉得比dragula.js 好的多
  17. 20145315何佳蕾《网络对抗》web基础
  18. linux centos6 yum 安装lamp
  19. [luogu T71973]卡常者π酱
  20. Zabbix监控windows的CPU利用率和其他资源

热门文章

  1. 洛谷 P3953 逛公园【spfa+记忆化dfs+bfs】
  2. bzoj P1979 华容道【bfs+spfa】
  3. JAVA 添加、修改和删除PDF书签
  4. 结对测试vs随机测试
  5. Unix\Linux | 总结笔记 | 用户管理
  6. B - Crossword solving
  7. centos7开启路由转发
  8. 随机L系统分形树 分类: 计算机图形学 2014-06-01 23:27 376人阅读 评论(0) 收藏
  9. C#---数据库访问通用类、Access数据库操作类、mysql类 .[转]
  10. C# 基础知识和VS2010的小技巧总汇(2)[转]