PHP操作Redis数据库常用方法示例


Posted in PHP onAugust 25, 2018

本文实例讲述了PHP操作Redis数据库常用方法。分享给大家供大家参考,具体如下:

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

Redis支持的数据类型有 Stirng(字符串), List(列表), Hash(字典), Set(集合), Sorted Set(有序集合);

redis版本是Redis 2.6.12 系统是在Windows+Apache2.4+php5.6

连接:

//实例化redis
$redis = new Redis();
//连接
$redis->connect('127.0.0.1', 6379);
//检测是否连接成功
echo "Server is running: " . $redis->ping();
// 输出结果 Server is running: +PONG

Strng(字符串):

// 设置一个字符串的值
$redis->set('cat', 111);
//获取一个字符串的值
echo $redis->get('cat'); // 111
// 重复set
$redis->set('cat', 222);
echo $redis->get('cat'); // 222

List(列表):

//列表
//存储数据到列表中
$redis->lpush('list', 'html');
$redis->lpush('list', 'css');
$redis->lpush('list', 'php');
//获取列表中所有的值
$list = $redis->lrange('list', 0, -1);
print_r($list);echo '<br>'; 
//从右侧加入一个
$redis->rpush('list', 'mysql');
$list = $redis->lrange('list', 0, -1);
print_r($list);echo '<br>';
//从左侧弹出一个
$redis->lpop('list');
$list = $redis->lrange('list', 0, -1);
print_r($list);echo '<br>';
//从右侧弹出一个
$redis->rpop('list');
$list = $redis->lrange('list', 0, -1);
print_r($list);echo '<br>';
// 结果
// Array ( [0] => php [1] => css [2] => html )
// Array ( [0] => php [1] => css [2] => html [3] => mysql )
// Array ( [0] => css [1] => html [2] => mysql )
// Array ( [0] => css [1] => html )
<?php
  //实例化redis
  $redis = new Redis();
  //连接
  $redis->connect('127.0.0.1', 6379);
  //列表
  //存储数据到列表中
  $redis->lpush('list', 'html');
  $redis->lpush('list', 'css');
  $redis->lpush('list', 'php');
  $redis->lpush('list', 'mysql');
  $redis->lpush('list', 'javascript');
  $redis->lpush('list', 'ajax');
  //获取列表中所有的值
  $list = $redis->lrange('list', 0, -1);
  print_r($list);echo '<br>'; 
  //获取列表的长度
  $length = $redis->lsize('list');
  echo $length;echo '<br>';
  //返回列表key中index位置的值
  echo $redis->lget('list', 2);echo '<br>';
  echo $redis->lindex('list', 2);echo '<br>';
  //设置列表中index位置的值
  echo $redis->lset('list', 2, 'linux');echo '<br>';
  $list = $redis->lrange('list', 0, -1);
  print_r($list);echo '<br>';
  //返回key中从start到end位置间的元素
  $list = $redis->lrange('list', 0, 2);
  print_r($list);echo '<br>';
  $list = $redis->lgetrange('list', 0, 2);
  print_r($list);echo '<br>';
  //截取链表中start到end的元素
//截取列表后列表发生变化,列表保留截取的元素,其余的删除
  $list = $redis->ltrim('list', 0, 1);
  print_r($list);echo '<br>';
  $list = $redis->lrange('list', 0, -1);
  print_r($list);echo '<br>';
  // 结果
  // Array ( [0] => ajax [1] => javascript [2] => mysql [3] => php [4] => css [5] => html )
  // 6
  // mysql
  // mysql
  // 1
  // Array ( [0] => ajax [1] => javascript [2] => linux [3] => php [4] => css [5] => html )
  // Array ( [0] => ajax [1] => javascript [2] => linux )
  // Array ( [0] => ajax [1] => javascript [2] => linux )
  // 1
  // Array ( [0] => ajax [1] => javascript )
<?php
  //实例化redis
  $redis = new Redis();
  //连接
  $redis->connect('127.0.0.1', 6379);
  //列表
  //存储数据到列表中
  $redis->lpush('list', 'html');
  $redis->lpush('list', 'html');
  $redis->lpush('list', 'html');
  $redis->lpush('list', 'css');
  $redis->lpush('list', 'php');
  $redis->lpush('list', 'mysql');
  $redis->lpush('list', 'javascript');
  $redis->lpush('list', 'html');
  $redis->lpush('list', 'html');
  $redis->lpush('list', 'html');
  $redis->lpush('list', 'ajax');
  //获取列表中所有的值
  $list = $redis->lrange('list', 0, -1);
  print_r($list);echo '<br>'; 
  //删除列表中count个值为value的元素
  //从左向右删
  $redis->lrem('list', 'html', 2);
  $list = $redis->lrange('list', 0, -1);
  print_r($list);echo '<br>'; 
  //从右向左删
  $redis->lrem('list', 'html', -2);
  $list = $redis->lrange('list', 0, -1);
  print_r($list);echo '<br>'; 
  //删除所有
  $redis->lrem('list', 'html', 0);
  $list = $redis->lrange('list', 0, -1);
  print_r($list);echo '<br>';
  // 结果
  // Array ( [0] => ajax [1] => html [2] => html [3] => html [4] => javascript [5] => mysql [6] => php [7] => css [8] => html [9] => html [10] => html )
  // Array ( [0] => ajax [1] => html [2] => javascript [3] => mysql [4] => php [5] => css [6] => html [7] => html [8] => html )
  // Array ( [0] => ajax [1] => html [2] => javascript [3] => mysql [4] => php [5] => css [6] => html )
  // Array ( [0] => ajax [1] => javascript [2] => mysql [3] => php [4] => css )

Hash(字典):

<?php
  //实例化redis
  $redis = new Redis();
  //连接
  $redis->connect('127.0.0.1', 6379);
  //字典
  //给hash表中某个key设置value
  //如果没有则设置成功,返回1,如果存在会替换原有的值,返回0,失败返回0
  echo $redis->hset('hash', 'cat', 'cat');echo '<br>';
  echo $redis->hset('hash', 'cat', 'cat');echo '<br>';
  echo $redis->hset('hash', 'cat', 'cat1');echo '<br>';
  echo $redis->hset('hash', 'dog', 'dog');echo '<br>';
  echo $redis->hset('hash', 'bird', 'bird');echo '<br>';
  echo $redis->hset('hash', 'monkey', 'monkey');echo '<br>';
  //获取hash中某个key的值
  echo $redis->hget('hash', 'cat');echo '<br>';
  //获取hash中所有的keys
  $arr = $redis->hkeys('hash');
  print_r($arr);echo '<br>';
  //获取hash中所有的值 顺序是随机的
  $arr = $redis->hvals('hash');
  print_r($arr);echo '<br>';
  //获取一个hash中所有的key和value 顺序是随机的
  $arr = $redis->hgetall('hash');
  print_r($arr);echo '<br>';
  //获取hash中key的数量
  echo $redis->hlen('hash');echo '<br>';
  //删除hash中一个key 如果表不存在或key不存在则返回false
  echo $redis->hdel('hash', 'dog');echo '<br>';
  var_dump($redis->hdel('hash', 'rabbit'));echo '<br>';
  // 结果
  // 1
  // 0
  // 0
  // 1
  // 1
  // 1
  // cat1
  // Array ( [0] => cat [1] => dog [2] => bird [3] => monkey )
  // Array ( [0] => cat1 [1] => dog [2] => bird [3] => monkey )
  // Array ( [cat] => cat1 [dog] => dog [bird] => bird [monkey] => monkey )
  // 4
  // 1
  // int(0)
<?php
  //实例化redis
  $redis = new Redis();
  //连接
  $redis->connect('127.0.0.1', 6379);
  //字典
  //批量设置多个key的值
  $arr = [1=>1, 2=>2, 3=>3, 4=>4, 5=>5];
  $redis->hmset('hash', $arr);
  print_r($redis->hgetall('hash'));echo '<br>';
  // 批量获得额多个key的值
  $arr = [1, 2, 3, 5];
  $hash = $redis->hmget('hash', $arr);
  print_r($hash);echo '<br>';
  //检测hash中某个key知否存在
  echo $redis->hexists('hash', '1');echo '<br>';
  var_dump($redis->hexists('hash', 'cat'));echo '<br>';
  print_r($redis->hgetall('hash'));echo '<br>';
  //给hash表中key增加一个整数值
  $redis->hincrby('hash', '1', 1);
  print_r($redis->hgetall('hash'));echo '<br>';
  //给hash中的某个key增加一个浮点值
  $redis->hincrbyfloat('hash', 2, 1.3);
  print_r($redis->hgetall('hash'));echo '<br>';
  //结果
  // Array ( [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 )
  // Array ( [1] => 1 [2] => 2 [3] => 3 [5] => 5 )
  // 1
  // bool(false)
  // Array ( [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 )
  // Array ( [1] => 2 [2] => 2 [3] => 3 [4] => 4 [5] => 5 )
  // Array ( [1] => 2 [2] => 3.3 [3] => 3 [4] => 4 [5] => 5 )

Set(集合):

<?php
  //实例化redis
  $redis = new Redis();
  //连接
  $redis->connect('127.0.0.1', 6379);
  //集合
  // 添加一个元素
  echo $redis->sadd('set', 'cat');echo '<br>';
  echo $redis->sadd('set', 'cat');echo '<br>';
  echo $redis->sadd('set', 'dog');echo '<br>';
  echo $redis->sadd('set', 'rabbit');echo '<br>';
  echo $redis->sadd('set', 'bear');echo '<br>';
  echo $redis->sadd('set', 'horse');echo '<br>';
  // 查看集合中所有的元素
  $set = $redis->smembers('set');
  print_r($set);echo '<br>';
  //删除集合中的value
  echo $redis->srem('set', 'cat');echo '<br>';
  var_dump($redis->srem('set', 'bird'));echo '<br>';
  $set = $redis->smembers('set');
  print_r($set);echo '<br>';
  //判断元素是否是set的成员
  var_dump($redis->sismember('set', 'dog'));echo '<br>';
  var_dump($redis->sismember('set', 'bird'));echo '<br>';
  //查看集合中成员的数量
  echo $redis->scard('set');echo '<br>';
  //移除并返回集合中的一个随机元素(返回被移除的元素)
  echo $redis->spop('set');echo '<br>';
  print_r($redis->smembers('set'));echo '<br>';
  // 结果
  // 1
  // 0
  // 1
  // 1
  // 1
  // 1
  // Array ( [0] => rabbit [1] => cat [2] => bear [3] => dog [4] => horse )
  // 1
  // int(0)
  // Array ( [0] => dog [1] => rabbit [2] => horse [3] => bear )
  // bool(true)
  // bool(false)
  // 4
  // bear
  // Array ( [0] => dog [1] => rabbit [2] => horse )
<?php
  //实例化redis
  $redis = new Redis();
  //连接
  $redis->connect('127.0.0.1', 6379);
  //集合
  $redis->sadd('set', 'horse');
  $redis->sadd('set', 'cat');
  $redis->sadd('set', 'dog');
  $redis->sadd('set', 'bird');
  $redis->sadd('set2', 'fish');
  $redis->sadd('set2', 'dog');
  $redis->sadd('set2', 'bird');
  print_r($redis->smembers('set'));echo '<br>';
  print_r($redis->smembers('set2'));echo '<br>';
  //返回集合的交集
  print_r($redis->sinter('set', 'set2'));echo '<br>';
  //执行交集操作 并结果放到一个集合中
  $redis->sinterstore('output', 'set', 'set2');
  print_r($redis->smembers('output'));echo '<br>';
  //返回集合的并集
  print_r($redis->sunion('set', 'set2'));echo '<br>';
  //执行并集操作 并结果放到一个集合中
  $redis->sunionstore('output', 'set', 'set2');
  print_r($redis->smembers('output'));echo '<br>';
  //返回集合的差集
  print_r($redis->sdiff('set', 'set2'));echo '<br>';
  //执行差集操作 并结果放到一个集合中
  $redis->sdiffstore('output', 'set', 'set2');
  print_r($redis->smembers('output'));echo '<br>';
  // 结果
  // Array ( [0] => cat [1] => dog [2] => bird [3] => horse )
  // Array ( [0] => bird [1] => dog [2] => fish )
  // Array ( [0] => bird [1] => dog )
  // Array ( [0] => dog [1] => bird )
  // Array ( [0] => cat [1] => dog [2] => bird [3] => horse [4] => fish )
  // Array ( [0] => cat [1] => dog [2] => bird [3] => horse [4] => fish )
  // Array ( [0] => horse [1] => cat )
  // Array ( [0] => horse [1] => cat )

Sorted Set(有序集合):

<?php
  //实例化redis
  $redis = new Redis();
  //连接
  $redis->connect('127.0.0.1', 6379);
  //有序集合
  //添加元素
  echo $redis->zadd('set', 1, 'cat');echo '<br>';
  echo $redis->zadd('set', 2, 'dog');echo '<br>';
  echo $redis->zadd('set', 3, 'fish');echo '<br>';
  echo $redis->zadd('set', 4, 'dog');echo '<br>';
  echo $redis->zadd('set', 4, 'bird');echo '<br>';
  //返回集合中的所有元素
  print_r($redis->zrange('set', 0, -1));echo '<br>';
  print_r($redis->zrange('set', 0, -1, true));echo '<br>';
  //返回元素的score值
  echo $redis->zscore('set', 'dog');echo '<br>';
  //返回存储的个数
  echo $redis->zcard('set');echo '<br>';
  //删除指定成员
  $redis->zrem('set', 'cat');
  print_r($redis->zrange('set', 0, -1));echo '<br>';
  //返回集合中介于min和max之间的值的个数
  print_r($redis->zcount('set', 3, 5));echo '<br>';
  //返回有序集合中score介于min和max之间的值
  print_r($redis->zrangebyscore('set', 3, 5));echo '<br>';
  print_r($redis->zrangebyscore('set', 3, 5, ['withscores'=>true]));echo '<br>';
  //返回集合中指定区间内所有的值
  print_r($redis->zrevrange('set', 1, 2));echo '<br>';
  print_r($redis->zrevrange('set', 1, 2, true));echo '<br>';
  //有序集合中指定值的socre增加
  echo $redis->zscore('set', 'dog');echo '<br>';
  $redis->zincrby('set', 2, 'dog');
  echo $redis->zscore('set', 'dog');echo '<br>';
  //移除score值介于min和max之间的元素
  print_r($redis->zrange('set', 0, -1, true));echo '<br>';
  print_r($redis->zremrangebyscore('set', 3, 4));echo '<br>';
  print_r($redis->zrange('set', 0, -1, true));echo '<br>';
  //结果
  // 1
  // 0
  // 0
  // 0
  // 0
  // Array ( [0] => cat [1] => fish [2] => bird [3] => dog )
  // Array ( [cat] => 1 [fish] => 3 [bird] => 4 [dog] => 4 )
  // 4
  // 4
  // Array ( [0] => fish [1] => bird [2] => dog )
  // 3
  // Array ( [0] => fish [1] => bird [2] => dog )
  // Array ( [fish] => 3 [bird] => 4 [dog] => 4 )
  // Array ( [0] => bird [1] => fish )
  // Array ( [bird] => 4 [fish] => 3 )
  // 4
  // 6
  // Array ( [fish] => 3 [bird] => 4 [dog] => 6 )
  // 2
  // Array ( [dog] => 6 )

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
在普通HTTP上安全地传输密码
Jul 21 PHP
PHP在字符串中查找指定字符串并删除的代码
Oct 02 PHP
php 删除无限级目录与文件代码共享
Nov 22 PHP
关于PHP二进制流 逐bit的低位在前算法(详解)
Jun 13 PHP
PHP大小写问题:函数名和类名不区分,变量名区分
Jun 17 PHP
PHP防止post重复提交数据的简单例子
Jun 07 PHP
php文件缓存类用法实例分析
Apr 22 PHP
人脸识别测颜值、测脸龄、测相似度微信接口
Apr 07 PHP
php计算给定日期所在周的开始日期和结束日期示例
Feb 06 PHP
Laravel学习教程之View模块详解
Sep 18 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
Jun 13 PHP
php常用经典函数集锦【数组、字符串、栈、队列、排序等】
Aug 23 PHP
PHP实现基于3DES算法加密解密字符串示例
Aug 24 #PHP
PHP与以太坊交互详解
Aug 24 #PHP
php获取微信基础接口凭证Access_token
Aug 23 #PHP
php对微信支付回调处理的方法
Aug 23 #PHP
PHP封装的验证码工具类定义与用法示例
Aug 22 #PHP
Yii2语言国际化自动配置详解
Aug 22 #PHP
PHP实现负载均衡的加权轮询方法分析
Aug 22 #PHP
You might like
使用Linux五年积累的一些经验技巧
2013/06/20 PHP
php中jpgraph类库的使用介绍
2013/08/08 PHP
php获取远程图片并下载保存到本地的方法分析
2016/10/08 PHP
thinkphp5.0自定义验证规则使用方法
2017/11/16 PHP
laravel 实现向公共模板中传值 (view composer)
2019/10/22 PHP
jQuery1.3.2 升级到jQuery1.4.4需要修改的地方
2011/01/06 Javascript
用JS实现一个TreeMenu效果分享
2011/08/28 Javascript
js中的setInterval和setTimeout使用实例
2014/05/09 Javascript
jQuery异步加载数据并添加事件示例
2014/08/24 Javascript
推荐10 款 SVG 动画的 JavaScript 库
2015/03/24 Javascript
谈谈AngularJs中的隐藏和显示
2015/12/09 Javascript
js运动应用实例解析
2015/12/28 Javascript
初步使用Node连接Mysql数据库
2016/03/03 Javascript
Bootstrap Metronic完全响应式管理模板学习笔记
2016/07/08 Javascript
使用jQuery监听扫码枪输入并禁止手动输入的实现方法(推荐)
2017/03/21 jQuery
基于JavaScript实现移动端无限加载分页
2017/03/27 Javascript
JS获取日期的方法实例【昨天,今天,明天,前n天,后n天的日期】
2017/09/28 Javascript
js的各种数据类型判断的介绍
2019/01/19 Javascript
详解基于React.js和Node.js的SSR实现方案
2019/03/21 Javascript
javascript使用substring实现的展开与收缩文字功能示例
2019/06/17 Javascript
jQuery提示框插件SweetAlert用法分析
2019/08/05 jQuery
vue项目引入ts步骤(小结)
2019/10/31 Javascript
2款Python内存检测工具介绍和使用方法
2014/06/01 Python
Python中模块string.py详解
2017/03/12 Python
Python实现利用最大公约数求三个正整数的最小公倍数示例
2017/09/30 Python
Python用imghdr模块识别图片格式实例解析
2018/01/11 Python
利用python修改json文件的value方法
2018/12/31 Python
Python3.5装饰器典型案例分析
2019/04/30 Python
python加密解密库cryptography使用openSSL生成的密匙加密解密
2020/02/11 Python
python标准库os库的函数介绍
2020/02/12 Python
浅谈Keras的Sequential与PyTorch的Sequential的区别
2020/06/17 Python
《蒙娜丽莎之约》教学反思
2014/02/27 职场文书
军训拉歌口号
2014/06/13 职场文书
小学运动会报道稿
2014/10/04 职场文书
导游词之青城山景区
2019/09/27 职场文书
铁拳制作人赞《铁拳7》老头环Mod:制作精良 但别弄了
2022/04/03 其他游戏