php操作redis数据库方法总结
一、安装php_redis扩展,用以操作redis
- http://pecl.php.net/package/redis
选择自已系统php版本对应的扩展。
二、redis连接与验证
- <?php
- //创建一个redis客户端
- $redis = new Redis();
- //连接redis服务,指定主机,端口,和超时时间
- $redis->connect('127.0.0.1', 6379, 60);
- //进行密码验证
- $redis->auth('');
三、redis的字符串(string)操作
- //设置键的值,成功返回true,失败返回false
- $ret = $redis->set('app_id', '1234567890');
- var_dump($ret);
- //获取键的值,成功返回键值,失败返回false
- $ret = $redis->get('app_id');
- var_dump($ret);
- //设置键的值从指定偏移量开始,替换成指定字符串,成功返回新字符串的长度
- $ret = $redis->setRange('app_id', 2, '666');
- var_dump($ret);
- //获取键的值,通过开始索引和结束索引,获取的子符串包括开始索引和结束索引
- $ret = $redis->getRange('app_id', 0, -1);
- var_dump($ret);
- $ret = $redis->getRange('app_id', 3, 6);
- var_dump($ret);
- //设置新值,返回旧值,如果key不存在,则设置值,返回false
- $ret = $redis->getSet('app_id', '666666666');
- var_dump($ret);
- //一次设置多个键值对
- $ret = $redis->mset(['db_name' => 'test', 'db_host' => 'localhost']);
- var_dump($ret);
- //一次获取多个键值对,返回一个数组
- $ret = $redis->mget(['db_name', 'db_host']);
- var_dump($ret);
- //设置键值,和过期时间,单位:秒,成功返回true
- $ret = $redis->setex('name', 10, 'hello');
- var_dump($ret);
- //设置键值,过期时间以毫秒为单位
- $ret = $redis->psetex('age', 10, '28');
- var_dump($ret);
- //key不存在时,才设置值,key不存在且设置成功返回true,否则返回false
- $ret = $redis->setnx('name', 'test');
- var_dump($ret);
- //setnx的批量操作,只有在所有key都不存在时才能设置成功,否则,有一个key存在,所有key都无法设置成功
- $ret = $redis->msetnx(['name' => 'hello', 'age' => '28', 'sex' => '男']);
- var_dump($ret);
- //获取键值的字符串长度,如果key不存在,返回0,如果值不为字符串返回false
- $ret = $redis->strlen('name');
- var_dump($ret);
- //将key中存储的数字值加1,如果key不存在先初始为0再加1,如果存储的不是数字值,则返回false,成功返回新增值
- $ret = $redis->incr('age');
- var_dump($ret);
- //将key中存储的数字值加指定增量值
- $ret = $redis->incrBy('age', 10);
- var_dump($ret);
- //将key中存储的数字值加指定浮点增量值
- $ret = $redis->incrByFloat('age', 0.25);
- var_dump($ret);
- //将key中存储的数字值减1
- $ret = $redis->decr('age');
- var_dump($ret);
- //将key中存储的数字值减指定减量值
- $ret = $redis->decrBy('age', 10);
- var_dump($ret);
- //给指定key的值,追加值到原值末尾,如果key不存在,则相当于set()函数
- $ret = $redis->append('name', 'hahaha');
- var_dump($ret);
四、redis的哈希(hash)操作
- //设置hash表中的键值,成功返回1,失败返回0
- $ret = $redis->hSet('user', 'name', 'xiaoxu');
- var_dump($ret);
- //获取hash表中键的值,如果hash表中不存在,则返回false
- $ret = $redis->hget('user', 'name');
- var_dump($ret);
- //判断hash表中字段是否存在,存在返回true,失败返回false
- $ret = $redis->hExists('user', 'name');
- var_dump($ret);
- //删除hash表中的字段,成功返回1,失败返回0
- $ret = $redis->hDel('user', 'name');
- var_dump($ret);
- //批量设置hash表中字段的值,成功返回true
- $ret = $redis->hMSet('user', ['name' => 'xiaoxu', 'age' => 28, 'sex' => '男']);
- var_dump($ret);
- //批量获取hash表中字段的值
- $ret = $redis->hMGet('user', ['name', 'age', 'sex']);
- var_dump($ret);
- //获取hash表中所有字段和值
- $ret = $redis->hGetAll('user');
- var_dump($ret);
- //获取hash表中所有字段名,hash不存在时返回空数组
- $ret = $redis->hKeys('user');
- var_dump($ret);
- //获取hash表中所有字段值
- $ret = $redis->hVals('user');
- var_dump($ret);
- //当hash表中字段不存在时,设置值。如果hash表不存在先创建,若字段存在,不作任何操作。
- //设置成功返回true,否则返回false
- $ret = $redis->hSetNx('user', 'height', 172);
- var_dump($ret);
- //获取hash表的字段数量,hash不存在返回0
- $ret = $redis->hlen('user');
- var_dump($ret);
- //为hash表中字段值增加指定增量值,如果增量值为负数,则相当于减法操作
- //hash表不存在则先创建,字段不存在则初始为0,若字段值为字符串,则返回false
- $ret = $redis->hIncrBy('user', 'age', 10);
- var_dump($ret);
- //为hash表中字段值增加指定浮点增量值
- $ret = $redis->hIncrByFloat('user', 'age', 0.25);
- var_dump($ret);
五、redis的列表(list)操作
- //从列表头部插入一个值
- $ret = $redis->lpush('students', 'xiaoxu');
- $ret = $redis->lpush('students', 'xiaoxu2');
- var_dump($ret);
- //从列表尾部插入一个值
- $ret = $redis->rpush('students', 'xiaowang');
- $ret = $redis->rpush('students', 'xiaowang2');
- var_dump($ret);
- //获取列表指定范围内的元素,0表示第一个元素,-1表示最后一个元素
- $ret = $redis->lRange('students', 0, -1);
- var_dump($ret);
- //将一个值插入到已存在的列表头部,列表不存在时操作无效。
- $ret = $redis->lPushx('students', 'xiaozhang');
- var_dump($ret);
- //将一个值插入到已存在的列表尾部,列表不存在时操作无效。
- $ret = $redis->rPushx('students', 'xiaoli');
- var_dump($ret);
- //移出并获取列表的第一个元素,若key不存在或不是列表则返回false。
- $ret = $redis->lpop('students');
- var_dump($ret);
- //移出并获取列表的最后一个元素,若key不存在或不是列表则返回false。
- $ret = $redis->rpop('students');
- var_dump($ret);
- //移出并获取列表的第一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
- //超时时间单位:秒
- $ret = $redis->blPop('students', 10);
- var_dump($ret);
- //移出并获取列表的最后一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
- $ret = $redis->brPop('students', 10);
- var_dump($ret);
- //移除列表中最后一个元素,将其插入另一个列表头部,并返回这个元素。若源列表没有元素则返回false。
- $ret = $redis->rpoplpush('students', 'students2');
- var_dump($ret);
- //移除列表中最后一个元素,将其插入另一个列表头部,并返回这个元素。
- //如果列表没有元素则会阻塞列表直到等待超时或发现可弹出元素为止。
- //超时时间单位:秒
- $ret = $redis->brpoplpush('students', 'students2', 10);
- var_dump($ret);
- //获取列表的长度
- $ret = $redis->lLen('students2');
- var_dump($ret);
- //通过索引获取列表中的元素。若索引超出列表范围则返回false。
- $ret = $redis->lIndex('students2', 0);
- var_dump($ret);
- //通过索引设置列表中元素的值。若是索引超出范围,或对一个空列表进行lset操作,则返回false。
- $ret = $redis->lSet('students2', 0, 'xiaomi');
- var_dump($ret);
- //在列表中指定元素前或后面插入元素。若指定元素不在列表中,或列表不存在时,不执行任何操作。
- //参数:列表的key,Redis::AFTER或Redis::BEFORE,基准元素,插入元素
- //返回值:插入成功返回插入后列表元素个数,若基准元素不存在返回-1,若key不存在返回0,若key不是列表返回false。
- $ret = $redis->lInsert('students2', Redis::AFTER, 'xiaomi', 'xiaoji');
- var_dump($ret);
- //根据第三个参数count的值,移除列表中与参数value相等的元素。
- //count > 0 : 从表头开始向表尾搜索,移除与value相等的元素,数量为count。
- //count < 0 : 从表尾开始向表头搜索,移除与value相等的元素,数量为count的绝对值。
- //count = 0 : 移除表中所有与value相等的值。
- //返回实际删除元素个数
- $ret = $redis->lrem('students2', 'xiaomi', 0);
- var_dump($ret);
- //对列表进行修剪,只保留指定区间的元素,其他元素都删除。成功返回true。
- $ret = $redis->ltrim('students2', 0, -1);
- var_dump($ret);
六、redis的集合(set)操作
- //向集合添加一个或多个成员
- //若集合不存在则先创建,若key不是集合类型则返回false
- //若元素已存在返回0,插入成功返回1。
- $ret = $redis->sAdd('friend', 'xiaoxu', 'xiaowang', 'xiaoli', 'xiaozhang');
- var_dump($ret);
- //返回集合中所有成员。
- $ret = $redis->sMembers('friend');
- var_dump($ret);
- //判断元素是否是集合key的成员
- $ret = $redis->sIsMember('friend', 'xiaoxu');
- var_dump($ret);
- //返回集合中成员的数量。
- $ret = $redis->scard('friend');
- var_dump($ret);
- //移除并返回集合中的一个随机元素
- $ret = $redis->spop('friend');
- var_dump($ret);
- //返回集合中的一个或多个随机成员元素,返回元素的数量和情况由函数的第二个参数count决定:
- //如果count为正数,且小于集合基数,那么命令返回一个包含count个元素的数组,数组中的元素各不相同。
- //如果count大于等于集合基数,那么返回整个集合。
- //如果count为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为count的绝对值。
- $ret = $redis->sRandMember('friend', 2);
- var_dump($ret);
- //移除集合中指定的一个元素,忽略不存在的元素。删除成功返回1,否则返回0。
- $ret = $redis->sRem('friend', 'xiaowang');
- var_dump($ret);
- //迭代集合中的元素
- //参数:集合的key,迭代器变量,匹配模式,每次返回元素数量(默认为10个)
- $ret = $redis->sScan('friend', $iter, 'xiao*', 5);
- var_dump($ret);
- var_dump($iter);
- //将指定成员从一个源集合移动到一个目的集合。
- //若源集合不存在或不包含指定元素则不做任何操作,返回false。
- //参数:源集合,目标集合,移动元素
- $ret = $redis->sMove('friend', 'friend2', 'xiaoxu');
- var_dump($ret);
- //返回所有给定集合之间的差集,不存在的集合视为空集。
- $ret = $redis->sDiff('friend', 'friend2');
- var_dump($ret);
- //将所有给定集合之间的差集存储在指定的目的集合中。
- //若目的集合已存在则覆盖它。返回差集元素个数。
- //参数:第一个参数为目标集合,存储差集。
- $ret = $redis->sDiffStore('friend3', 'friend2', 'friend');
- var_dump($ret);
- //返回所有给定集合的交集,不存在的集合视为空集。
- $ret = $redis->sInter('friend', 'friend2');
- var_dump($ret);
- //将所有给定集合的交集存储在指定的目的集合中。
- //若目的集合已存在则覆盖它。返回交集元素个数。
- //参数:第一个参数为目标集合,存储交集。
- $ret = $redis->sInterStore('friend4', 'friend2', 'friend');
- var_dump($ret);
- //返回所有给定集合的并集,不存在的集合视为空集。
- $ret = $redis->sUnion('friend', 'friend2');
- var_dump($ret);
- //将所有给定集合的并集存储在指定的目的集合中。
- //若目的集合已存在则覆盖它。返回并集元素个数。
- //参数:第一个参数为目标集合,存储并集。
- $ret = $redis->sUnionStore('friend5', 'friend2', 'friend');
- var_dump($ret);
七、redis的有序集合(sorted set)操作
- //将一个或多个成员元素及其分数值加入到有序集当中。
- //如果某个成员已经是有序集的成员,则更新这个成员的分数值,并通过重新插入这个成员元素,来保证该成员在正确的位置上。
- //分数值可以是整数值或双精度浮点数。
- $ret = $redis->zadd('scores', 60, 'math', 80, 'english', 75, 'chinese');
- var_dump($ret);
- //返回有序集中指定区间内的成员。成员按分数从小到大排序,分数值相同的则按字典序来排序。
- //参数:第四个参数表示是否返回各个元素的分数值,默认为false。
- $ret = $redis->zRange('scores', 0, -1, true);
- var_dump($ret);
- //返回有序集中指定区间内的成员。成员按分数值从大到小排序,分数值相同的则按字典序的逆序来排序。
- $ret = $redis->zRevRange('scores', 0, -1, true);
- var_dump($ret);
- //返回有序集中指定分数区间的成员列表,按分数值从小到大排序,
- //分数值相同的则按字典序来排序。默认使用闭区间。
- $ret = $redis->zRangeByScore('scores', 60, 90, ['withscores' => true]);
- var_dump($ret);
- //返回有序集中指定分数区间的成员列表,按分数值递减排序,
- //分数值相同的则按字典序的逆序来排序。
- //注意,区间表示的时候大值在前,小值在后,默认使用闭区间。
- $ret = $redis->zRevRangeByScore('scores', 90, 60, ['withscores' => true]);
- var_dump($ret);
- //迭代有序集合中的元素。
- //返回值:[元素名 => 分数值, ...]
- $ret = $redis->zScan('scores', $iter, '*', 10);
- var_dump($ret);
- var_dump($iter);
- //返回指定有序集的元素数量。
- $ret = $redis->zCard('scores');
- var_dump($ret);
- //返回有序集中指定分数区间的成员数量。
- $ret = $redis->zCount('scores', 60, 90);
- var_dump($ret);
- //返回有序集中指定成员的分数值。若成员不存在则返回false。
- $ret = $redis->zScore('scores', 'english');
- var_dump($ret);
- //返回有序集中指定成员的排名,按分数值从小到大排序。分数值最小者排名为0。
- $ret = $redis->zRank('scores', 'english');
- var_dump($ret);
- //返回有序集中指定成员的排名,按分数值从大到小排序。分数值最大者排名为0。
- $ret = $redis->zRevRank('scores', 'english');
- var_dump($ret);
- //移除有序集中的一个或多个成员,忽略不存在的成员。返回删除的元素个数。
- $ret = $redis->zRem('scores', 'english');
- var_dump($ret);
- //移除有序集中指定排名区间的所有成员。
- $ret = $redis->zRemRangeByRank('scores', 0, 2);
- var_dump($ret);
- //移除有序集中指定分数值区间的所有成员。
- $ret = $redis->zRemRangeByScore('scores', 60, 90);
- var_dump($ret);
- //对有序集中指定成员的分数值增加指定增量值。
- //若为负数则做减法,若有序集不存在则先创建,若有序集中没有对应成员则先添加,最后再操作。
- $ret = $redis->zIncrBy('scores', 2, 'chinese');
- var_dump($ret);
- //计算给定一个或多个有序集的交集,并将其存储到一个目的有序集中。
- //参数:目的有序集合,多个有序集合,多个有序集合的权重,合并有序集合的方式(成员的分数值与权重相乘后的是相加或是比较大小)
- $redis->zAdd('s1', 1, '111');
- $redis->zAdd('s1', 2, '222');
- $redis->zAdd('s1', 3, '333');
- $redis->zAdd('s2', 4, '222');
- $redis->zAdd('s2', 5, '333');
- $ret = $redis->zInter('s3', ['s1', 's2'], [1, 5], 'SUM');
- // ['222' => 22, '333' => 28]
- var_dump($ret);
- $ret = $redis->zInter('s4', ['s1', 's2'], [1, 5], 'MIN');
- // ['222' => 2, '333' => 3]
- var_dump($ret);
- $ret = $redis->zInter('s5', ['s1', 's2'], [1, 5], 'MAX');
- // ['222' => 20, '333' => 25]
- var_dump($ret);
- //计算给定一个或多个有序集的并集,并将其存储到一个目的有序集中。
- //结果集中某个成员的分数值是所有给定集下该成员分数值之和。
- $ret = $redis->zUnion('s6', ['s1', 's2'], [5, 1], 'SUM');
- // ['111' => 5, '222' => 14, '333' => 20]
- var_dump($ret);
- $ret = $redis->zUnion('s7', ['s1', 's2'], [5, 1], 'MIN');
- // ['222' => 4, '111' => 5, '333' => 5]
- var_dump($ret);
- $ret = $redis->zUnion('s8', ['s1', 's2'], [5, 1], 'MAX');
- // ['111' => 5, '222' => 10, '333' => 15]
- var_dump($ret);
php操作redis数据库方法总结的更多相关文章
- 操作redis数据库 & 操作Excel & 开发接口
操作redis数据库: string类型 1. 增 set,传俩个参数 key value(只要是字符串就行)2. 删 delete 传一个参数 key3. 修改 set 在目标key重新传参 key ...
- Python之操作redis数据库
使用redis模块 一.操作redis 1.添加信息 (1)直接建key-value信息: 右键-Add New Key,手动添加key和value 右键-Console,打开控制台,写入命令 (2) ...
- Linux+Redis实战教程_day02_3、redis数据类型_4、String命令_5、hash命令_6、java操作redis数据库技术
3. redis数据类型[重点] redis 使用的是键值对保存数据.(map) key:全部都是字符串 value:有五种数据类型 Key名:自定义,key名不要过长,否则影响使用效率 Key名不要 ...
- redis python 操作 Python操作Redis数据库
原文章于此:https://www.cnblogs.com/cnkai/p/7642787.html 有个人修改与改正 Python操作Redis数据库 连接数据库 StrictRedisfrom ...
- Jedis(java操作redis数据库技术)
Redis有什么命令,Jedis就有什么方法. 客户端无法连接时,需要考虑防火墙配置,比如6379端口是否开放,也可以直接关闭防火墙. Jedis连接池: import org.junit.Test; ...
- python学习笔记(十六)python操作redis数据库
Redis是一个key-value存储系统,它支持丰富的数据类型,如:string.list.set.zset(sorted set).hash. Redis特点 Redis以内存作为数据存储介质,所 ...
- Python进阶学习_连接操作Redis数据库
安装导入第三方模块Redis pip3 install redis import redis 操作String类型 """ redis 基本命令 String set(n ...
- PHP操作Redis数据库常用方法
Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API. Redis支持的数据类型有 Stirng(字符串), Lis ...
- Redis学习(5)-Jedis(Java操作redis数据库技术)
Java连接redis 一,导入jar包 Redis有什么命令,Jedis就有什么方法 设置防火墙 在Linux上面运行如下代码: 单实例:Jedis实例: package com.jedis.dem ...
随机推荐
- python(list、字典、元组、字符串方法、文件读写)草稿
1.list 定义list a = [] 添加元素 a.append('xx') #在list末尾添加 a.insert(0,'abc') #在指定某位置添加元素.指定的下标不存在就在末尾添加 ...
- Spring boot 的 properties 属性值配置 application.properties 与 自定义properties
配置属性值application.properties 文件直接配置: com.ieen.super.name="MDD" 自定义properties文件配置:src/main/r ...
- Java中的static修饰int值做全局变量与static修饰词初始化顺序
先看一道题 public class HasStatic{ private static int x=100; public static void main(String args[]){ HasS ...
- 十进制 -> 十六进制
x /16 依次取余 ,最先余作十六进制的最低 字节有效位,最后的余数 作最高的字节有效位,其中我们需要注意理解 的是 一个 数据的 最高字节及 内存的 高地址及低地址 更进一步的就算机器存储的 ...
- Logparser介绍
原文链接:https://www.cnblogs.com/Jerseyblog/p/3986591.html Logparser是一款非常强大的日志分析软件,可以帮助你详细的分析网站日志.是所有数据分 ...
- 字符型转换为字符串ToString
字符型转换为字符串 // C 货币 2.5.ToString("C"); // ¥2.50 // D 10进制数 25.ToString("D5"); // 2 ...
- 记数据库数据文件损坏恢复ORA-00376+ORA-01110
现象:业务平台无法登陆,日志报错为ORACLE的错误. 查看oracle日志的报错, ORA-00376: file 5 cannot be read at this time ORA-01110: ...
- [python爬虫] Selenium常见元素定位方法和操作的学习介绍
这篇文章主要Selenium+Python自动测试或爬虫中的常见定位方法.鼠标操作.键盘操作介绍,希望该篇基础性文章对你有所帮助,如果有错误或不足之处,请海涵~同时CSDN总是屏蔽这篇文章,再加上最近 ...
- pyqt-QGrapicsView 坐标系详解
PTQT——GraphicsView框架 转载 原网址 http://blog.51cto.com/9291927/1879128 一.GraphicsView框架简介 QT4.2开始引入了Graph ...
- 44_redux_comment应用_redux版本_同步功能
项目结构: components里面的东西没变,将app.jsx移动至containers中 /* * 包含所有action的type名称常量 * */ //添加评论 export const ADD ...