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,2018-06-25] 高德纳箭号表示法
概念 高德纳箭号表示法是种用来表示很大的整数的方法,由高德纳于1976年设计.它的意念来自幂是重复的乘法,乘法是重复的加法. 定义 计算 一个箭头 2↑3=2×2×2=8 2↑4=2×2×2×2=16 ...
- RestTemplate invoke JSON and convert to Object
@Test public void webTest() throws JsonProcessingException { Map<String, String> a = new HashM ...
- vue.js 自定义事件
<div id="app"> <h2>{{num}}</h2> <h1>全局组件</h1> <my-compone ...
- java Page分页显示
//entity层实体类 import java.util.List; //分页展示 //相关属性:当前页,页大小(每页显示的条数),总页数,总条数,数据 //select * from t_user ...
- SQLserver登陆报错
https://blog.csdn.net/captain618/article/details/52331372 今天也不知道sql server抽了什么风,无论是windows登录还是sa登录,登 ...
- (ZT)算法杂货铺——分类算法之朴素贝叶斯分类(Naive Bayesian classification)
https://www.cnblogs.com/leoo2sk/archive/2010/09/17/naive-bayesian-classifier.html 0.写在前面的话 我个人一直很喜欢算 ...
- 吴裕雄 python 机器学习——岭回归
import numpy as np import matplotlib.pyplot as plt from sklearn import datasets, linear_model from s ...
- Python来袭,教你用Neo4j构建“复联4”人物关系图谱!
来源商业新知网,原标题:Python来袭,教你用Neo4j构建“复联4”人物关系图谱!没有剧透! 复仇者联盟 之绝对不剧透 漫威英雄们为了不让自己剧透也是使出了浑身解数.在洛杉矶全球首映礼上记者费尽心 ...
- ES6你不知道的let关键字及变量的提升
一.JavaScript变量创建到访问赋值的过程 创建 create/declare 初始化 initialize 赋值 assign 1.函数的提升 // 函数这种变量声明,首先会创建变量,再初始化 ...
- TODO:BGP 建立过程
//TODO: Quagga 实时监控配置文件