redis(以php代码为例)
2024-09-25 20:26:03
备注: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、监听者收到消息:
最新文章
- C++ version the delaunay triangulation
- apk瘦身(包大小优化)
- 华为OJ:字符串合并处理
- 广州大学华软软件学院——NA视频下载
- shell脚本查看网络配置
- AIM Tech Round 3 (Div. 2) B 数学+贪心
- dockerfile语法
- 201521123099 《Java程序设计》第2周学习总结
- 杂谈--DML触发器学习
- 初学者易上手的SSH-struts2 04值栈与ognl表达式
- navicat for sqlite 11.1.12 patch 永久试用 不报毒
- CommonJS,AMD,RequireJS的区别
- JavaScript语言学习中的注意事项
- java的制作";时间账本";
- 一梦江湖费六年——QQ群聊天分析
- 拖放排序插件Sortable.js 兼容好及功能全个人觉得比dragula.js 好的多
- 20145315何佳蕾《网络对抗》web基础
- linux centos6 yum 安装lamp
- [luogu T71973]卡常者π酱
- Zabbix监控windows的CPU利用率和其他资源
热门文章
- 洛谷 P3953 逛公园【spfa+记忆化dfs+bfs】
- bzoj P1979 华容道【bfs+spfa】
- JAVA 添加、修改和删除PDF书签
- 结对测试vs随机测试
- Unix\Linux | 总结笔记 | 用户管理
- B - Crossword solving
- centos7开启路由转发
- 随机L系统分形树 分类: 计算机图形学 2014-06-01 23:27 376人阅读 评论(0) 收藏
- C#---数据库访问通用类、Access数据库操作类、mysql类 .[转]
- C# 基础知识和VS2010的小技巧总汇(2)[转]