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 相关文章推荐
一步一步学习PHP(8) php 数组
Mar 05 PHP
通俗易懂的php防注入代码
Apr 07 PHP
PHP入门学习笔记之一
Oct 12 PHP
PHP超级全局变量数组小结
Oct 04 PHP
php生成静态页面的简单示例
Apr 17 PHP
php实现在服务器上创建目录的方法
Mar 16 PHP
php简单操作mysql数据库的类
Apr 16 PHP
php自定义hash函数实例
May 05 PHP
[原创]php简单防盗链验证实现方法
Jul 09 PHP
php安装php_rar扩展实现rar文件读取和解压的方法
Nov 17 PHP
利用php + Laravel如何实现部署自动化详解
Oct 11 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
Feb 29 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
一个PHP的String类代码
2010/04/20 PHP
php获取一个变量的名字的方法
2014/09/05 PHP
PHP IDE phpstorm 常用快捷键
2015/05/18 PHP
javascript 冒号 使用说明
2009/06/06 Javascript
JavaScript 对象模型 执行模型
2009/12/06 Javascript
基于JQuery实现鼠标点击文本框显示隐藏提示文本
2012/02/23 Javascript
JQuery学习笔录 简单的JQuery
2012/04/09 Javascript
js模仿html5 placeholder适应于不支持的浏览器
2013/01/13 Javascript
基于JavaScript实现 获取鼠标点击位置坐标的方法
2013/04/12 Javascript
jQuery实现切换字体大小的方法
2015/03/10 Javascript
NODE.JS跨域问题的完美解决方案
2016/10/20 Javascript
基于jQuery实现的幻灯图片切换
2016/12/02 Javascript
bootstrap滚动监控器使用方法解析
2017/01/13 Javascript
bootstrap表单按回车会自动刷新页面的解决办法
2017/03/08 Javascript
10个在JavaScript开发中常遇到的BUG
2017/12/18 Javascript
Node.js进阶之核心模块https入门
2018/05/23 Javascript
详解React Native 屏幕适配(炒鸡简单的方法)
2018/06/11 Javascript
layer.msg()去掉默认时间,实现手动关闭的方法
2019/09/12 Javascript
Vue+Node服务器查询Mongo数据库及页面数据传递操作实例分析
2019/12/20 Javascript
[07:26]2015国际邀请赛第二日TOP10集锦
2015/08/06 DOTA
CentOS6.9 Python环境配置(python2.7、pip、virtualenv)
2019/05/06 Python
python实现邮件自动发送
2019/08/10 Python
Python操作redis和mongoDB的方法
2019/12/19 Python
Python3打包exe代码2种方法实例解析
2020/02/17 Python
django在开发中取消外键约束的实现
2020/05/20 Python
BCBG官网:BCBGMAXAZRIA
2017/12/29 全球购物
澳大利亚天然护肤品、化妆品和健康产品一站式商店:Nourished Life
2018/12/02 全球购物
Parfumdreams芬兰:购买香水和化妆品
2021/02/13 全球购物
小学开学典礼主持词
2014/03/19 职场文书
毕业生学校推荐信范文
2014/05/21 职场文书
预备党员个人总结
2015/02/14 职场文书
电工实训心得体会
2016/01/14 职场文书
会计继续教育培训心得体会
2016/01/19 职场文书
2019年恭贺升学祝福语集锦
2019/08/15 职场文书
python 用递归实现通用爬虫解析器
2021/04/16 Python
如何使JavaScript休眠或等待
2021/04/27 Javascript