设为首页收藏本站
网站公告 | 这是第一条公告
     

 找回密码
 立即注册
缓存时间06 现在时间06 缓存数据 只有内心祥和,才不会被生活所左右,所以一定要从容淡泊。

只有内心祥和,才不会被生活所左右,所以一定要从容淡泊。

查看: 1278|回复: 3

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

[复制链接]

  离线 

TA的专栏

  • 打卡等级:热心大叔
  • 打卡总天数:220
  • 打卡月天数:0
  • 打卡总奖励:3528
  • 最近打卡:2025-04-11 01:42:35
等级头衔

等級:晓枫资讯-上等兵

在线时间
0 小时

积分成就
威望
0
贡献
395
主题
349
精华
0
金钱
4653
积分
788
注册时间
2023-1-21
最后登录
2025-4-11

发表于 2023-2-13 00:35:44 | 显示全部楼层 |阅读模式
本文实例讲述了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
连接:
  1. //实例化redis
  2. $redis = new Redis();
  3. //连接
  4. $redis->connect('127.0.0.1', 6379);
  5. //检测是否连接成功
  6. echo "Server is running: " . $redis->ping();
  7. // 输出结果 Server is running: +PONG
复制代码
Strng(字符串):
  1. // 设置一个字符串的值
  2. $redis->set('cat', 111);
  3. //获取一个字符串的值
  4. echo $redis->get('cat'); // 111
  5. // 重复set
  6. $redis->set('cat', 222);
  7. echo $redis->get('cat'); // 222
复制代码
List(列表):
  1. //列表
  2. //存储数据到列表中
  3. $redis->lpush('list', 'html');
  4. $redis->lpush('list', 'css');
  5. $redis->lpush('list', 'php');
  6. //获取列表中所有的值
  7. $list = $redis->lrange('list', 0, -1);
  8. print_r($list);echo '<br>';
  9. //从右侧加入一个
  10. $redis->rpush('list', 'mysql');
  11. $list = $redis->lrange('list', 0, -1);
  12. print_r($list);echo '<br>';
  13. //从左侧弹出一个
  14. $redis->lpop('list');
  15. $list = $redis->lrange('list', 0, -1);
  16. print_r($list);echo '<br>';
  17. //从右侧弹出一个
  18. $redis->rpop('list');
  19. $list = $redis->lrange('list', 0, -1);
  20. print_r($list);echo '<br>';
  21. // 结果
  22. // Array ( [0] => php [1] => css [2] => html )
  23. // Array ( [0] => php [1] => css [2] => html [3] => mysql )
  24. // Array ( [0] => css [1] => html [2] => mysql )
  25. // Array ( [0] => css [1] => html )
复制代码
  1. <?php
  2.   //实例化redis
  3.   $redis = new Redis();
  4.   //连接
  5.   $redis->connect('127.0.0.1', 6379);
  6.   //列表
  7.   //存储数据到列表中
  8.   $redis->lpush('list', 'html');
  9.   $redis->lpush('list', 'css');
  10.   $redis->lpush('list', 'php');
  11.   $redis->lpush('list', 'mysql');
  12.   $redis->lpush('list', 'javascript');
  13.   $redis->lpush('list', 'ajax');
  14.   //获取列表中所有的值
  15.   $list = $redis->lrange('list', 0, -1);
  16.   print_r($list);echo '<br>';
  17.   //获取列表的长度
  18.   $length = $redis->lsize('list');
  19.   echo $length;echo '<br>';
  20.   //返回列表key中index位置的值
  21.   echo $redis->lget('list', 2);echo '<br>';
  22.   echo $redis->lindex('list', 2);echo '<br>';
  23.   //设置列表中index位置的值
  24.   echo $redis->lset('list', 2, 'linux');echo '<br>';
  25.   $list = $redis->lrange('list', 0, -1);
  26.   print_r($list);echo '<br>';
  27.   //返回key中从start到end位置间的元素
  28.   $list = $redis->lrange('list', 0, 2);
  29.   print_r($list);echo '<br>';
  30.   $list = $redis->lgetrange('list', 0, 2);
  31.   print_r($list);echo '<br>';
  32.   //截取链表中start到end的元素
  33. //截取列表后列表发生变化,列表保留截取的元素,其余的删除
  34.   $list = $redis->ltrim('list', 0, 1);
  35.   print_r($list);echo '<br>';
  36.   $list = $redis->lrange('list', 0, -1);
  37.   print_r($list);echo '<br>';
  38.   // 结果
  39.   // Array ( [0] => ajax [1] => javascript [2] => mysql [3] => php [4] => css [5] => html )
  40.   // 6
  41.   // mysql
  42.   // mysql
  43.   // 1
  44.   // Array ( [0] => ajax [1] => javascript [2] => linux [3] => php [4] => css [5] => html )
  45.   // Array ( [0] => ajax [1] => javascript [2] => linux )
  46.   // Array ( [0] => ajax [1] => javascript [2] => linux )
  47.   // 1
  48.   // Array ( [0] => ajax [1] => javascript )
复制代码
  1. <?php
  2.   //实例化redis
  3.   $redis = new Redis();
  4.   //连接
  5.   $redis->connect('127.0.0.1', 6379);
  6.   //列表
  7.   //存储数据到列表中
  8.   $redis->lpush('list', 'html');
  9.   $redis->lpush('list', 'html');
  10.   $redis->lpush('list', 'html');
  11.   $redis->lpush('list', 'css');
  12.   $redis->lpush('list', 'php');
  13.   $redis->lpush('list', 'mysql');
  14.   $redis->lpush('list', 'javascript');
  15.   $redis->lpush('list', 'html');
  16.   $redis->lpush('list', 'html');
  17.   $redis->lpush('list', 'html');
  18.   $redis->lpush('list', 'ajax');
  19.   //获取列表中所有的值
  20.   $list = $redis->lrange('list', 0, -1);
  21.   print_r($list);echo '<br>';
  22.   //删除列表中count个值为value的元素
  23.   //从左向右删
  24.   $redis->lrem('list', 'html', 2);
  25.   $list = $redis->lrange('list', 0, -1);
  26.   print_r($list);echo '<br>';
  27.   //从右向左删
  28.   $redis->lrem('list', 'html', -2);
  29.   $list = $redis->lrange('list', 0, -1);
  30.   print_r($list);echo '<br>';
  31.   //删除所有
  32.   $redis->lrem('list', 'html', 0);
  33.   $list = $redis->lrange('list', 0, -1);
  34.   print_r($list);echo '<br>';
  35.   // 结果
  36.   // Array ( [0] => ajax [1] => html [2] => html [3] => html [4] => javascript [5] => mysql [6] => php [7] => css [8] => html [9] => html [10] => html )
  37.   // Array ( [0] => ajax [1] => html [2] => javascript [3] => mysql [4] => php [5] => css [6] => html [7] => html [8] => html )
  38.   // Array ( [0] => ajax [1] => html [2] => javascript [3] => mysql [4] => php [5] => css [6] => html )
  39.   // Array ( [0] => ajax [1] => javascript [2] => mysql [3] => php [4] => css )
复制代码
Hash(字典):
  1. <?php
  2.   //实例化redis
  3.   $redis = new Redis();
  4.   //连接
  5.   $redis->connect('127.0.0.1', 6379);
  6.   //字典
  7.   //给hash表中某个key设置value
  8.   //如果没有则设置成功,返回1,如果存在会替换原有的值,返回0,失败返回0
  9.   echo $redis->hset('hash', 'cat', 'cat');echo '<br>';
  10.   echo $redis->hset('hash', 'cat', 'cat');echo '<br>';
  11.   echo $redis->hset('hash', 'cat', 'cat1');echo '<br>';
  12.   echo $redis->hset('hash', 'dog', 'dog');echo '<br>';
  13.   echo $redis->hset('hash', 'bird', 'bird');echo '<br>';
  14.   echo $redis->hset('hash', 'monkey', 'monkey');echo '<br>';
  15.   //获取hash中某个key的值
  16.   echo $redis->hget('hash', 'cat');echo '<br>';
  17.   //获取hash中所有的keys
  18.   $arr = $redis->hkeys('hash');
  19.   print_r($arr);echo '<br>';
  20.   //获取hash中所有的值 顺序是随机的
  21.   $arr = $redis->hvals('hash');
  22.   print_r($arr);echo '<br>';
  23.   //获取一个hash中所有的key和value 顺序是随机的
  24.   $arr = $redis->hgetall('hash');
  25.   print_r($arr);echo '<br>';
  26.   //获取hash中key的数量
  27.   echo $redis->hlen('hash');echo '<br>';
  28.   //删除hash中一个key 如果表不存在或key不存在则返回false
  29.   echo $redis->hdel('hash', 'dog');echo '<br>';
  30.   var_dump($redis->hdel('hash', 'rabbit'));echo '<br>';
  31.   // 结果
  32.   // 1
  33.   // 0
  34.   // 0
  35.   // 1
  36.   // 1
  37.   // 1
  38.   // cat1
  39.   // Array ( [0] => cat [1] => dog [2] => bird [3] => monkey )
  40.   // Array ( [0] => cat1 [1] => dog [2] => bird [3] => monkey )
  41.   // Array ( [cat] => cat1 [dog] => dog [bird] => bird [monkey] => monkey )
  42.   // 4
  43.   // 1
  44.   // int(0)
复制代码
  1. <?php
  2.   //实例化redis
  3.   $redis = new Redis();
  4.   //连接
  5.   $redis->connect('127.0.0.1', 6379);
  6.   //字典
  7.   //批量设置多个key的值
  8.   $arr = [1=>1, 2=>2, 3=>3, 4=>4, 5=>5];
  9.   $redis->hmset('hash', $arr);
  10.   print_r($redis->hgetall('hash'));echo '<br>';
  11.   // 批量获得额多个key的值
  12.   $arr = [1, 2, 3, 5];
  13.   $hash = $redis->hmget('hash', $arr);
  14.   print_r($hash);echo '<br>';
  15.   //检测hash中某个key知否存在
  16.   echo $redis->hexists('hash', '1');echo '<br>';
  17.   var_dump($redis->hexists('hash', 'cat'));echo '<br>';
  18.   print_r($redis->hgetall('hash'));echo '<br>';
  19.   //给hash表中key增加一个整数值
  20.   $redis->hincrby('hash', '1', 1);
  21.   print_r($redis->hgetall('hash'));echo '<br>';
  22.   //给hash中的某个key增加一个浮点值
  23.   $redis->hincrbyfloat('hash', 2, 1.3);
  24.   print_r($redis->hgetall('hash'));echo '<br>';
  25.   //结果
  26.   // Array ( [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 )
  27.   // Array ( [1] => 1 [2] => 2 [3] => 3 [5] => 5 )
  28.   // 1
  29.   // bool(false)
  30.   // Array ( [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 )
  31.   // Array ( [1] => 2 [2] => 2 [3] => 3 [4] => 4 [5] => 5 )
  32.   // Array ( [1] => 2 [2] => 3.3 [3] => 3 [4] => 4 [5] => 5 )
复制代码
Set(集合):
  1. <?php
  2.   //实例化redis
  3.   $redis = new Redis();
  4.   //连接
  5.   $redis->connect('127.0.0.1', 6379);
  6.   //集合
  7.   // 添加一个元素
  8.   echo $redis->sadd('set', 'cat');echo '<br>';
  9.   echo $redis->sadd('set', 'cat');echo '<br>';
  10.   echo $redis->sadd('set', 'dog');echo '<br>';
  11.   echo $redis->sadd('set', 'rabbit');echo '<br>';
  12.   echo $redis->sadd('set', 'bear');echo '<br>';
  13.   echo $redis->sadd('set', 'horse');echo '<br>';
  14.   // 查看集合中所有的元素
  15.   $set = $redis->smembers('set');
  16.   print_r($set);echo '<br>';
  17.   //删除集合中的value
  18.   echo $redis->srem('set', 'cat');echo '<br>';
  19.   var_dump($redis->srem('set', 'bird'));echo '<br>';
  20.   $set = $redis->smembers('set');
  21.   print_r($set);echo '<br>';
  22.   //判断元素是否是set的成员
  23.   var_dump($redis->sismember('set', 'dog'));echo '<br>';
  24.   var_dump($redis->sismember('set', 'bird'));echo '<br>';
  25.   //查看集合中成员的数量
  26.   echo $redis->scard('set');echo '<br>';
  27.   //移除并返回集合中的一个随机元素(返回被移除的元素)
  28.   echo $redis->spop('set');echo '<br>';
  29.   print_r($redis->smembers('set'));echo '<br>';
  30.   // 结果
  31.   // 1
  32.   // 0
  33.   // 1
  34.   // 1
  35.   // 1
  36.   // 1
  37.   // Array ( [0] => rabbit [1] => cat [2] => bear [3] => dog [4] => horse )
  38.   // 1
  39.   // int(0)
  40.   // Array ( [0] => dog [1] => rabbit [2] => horse [3] => bear )
  41.   // bool(true)
  42.   // bool(false)
  43.   // 4
  44.   // bear
  45.   // Array ( [0] => dog [1] => rabbit [2] => horse )
复制代码
  1. <?php
  2.   //实例化redis
  3.   $redis = new Redis();
  4.   //连接
  5.   $redis->connect('127.0.0.1', 6379);
  6.   //集合
  7.   $redis->sadd('set', 'horse');
  8.   $redis->sadd('set', 'cat');
  9.   $redis->sadd('set', 'dog');
  10.   $redis->sadd('set', 'bird');
  11.   $redis->sadd('set2', 'fish');
  12.   $redis->sadd('set2', 'dog');
  13.   $redis->sadd('set2', 'bird');
  14.   print_r($redis->smembers('set'));echo '<br>';
  15.   print_r($redis->smembers('set2'));echo '<br>';
  16.   //返回集合的交集
  17.   print_r($redis->sinter('set', 'set2'));echo '<br>';
  18.   //执行交集操作 并结果放到一个集合中
  19.   $redis->sinterstore('output', 'set', 'set2');
  20.   print_r($redis->smembers('output'));echo '<br>';
  21.   //返回集合的并集
  22.   print_r($redis->sunion('set', 'set2'));echo '<br>';
  23.   //执行并集操作 并结果放到一个集合中
  24.   $redis->sunionstore('output', 'set', 'set2');
  25.   print_r($redis->smembers('output'));echo '<br>';
  26.   //返回集合的差集
  27.   print_r($redis->sdiff('set', 'set2'));echo '<br>';
  28.   //执行差集操作 并结果放到一个集合中
  29.   $redis->sdiffstore('output', 'set', 'set2');
  30.   print_r($redis->smembers('output'));echo '<br>';
  31.   // 结果
  32.   // Array ( [0] => cat [1] => dog [2] => bird [3] => horse )
  33.   // Array ( [0] => bird [1] => dog [2] => fish )
  34.   // Array ( [0] => bird [1] => dog )
  35.   // Array ( [0] => dog [1] => bird )
  36.   // Array ( [0] => cat [1] => dog [2] => bird [3] => horse [4] => fish )
  37.   // Array ( [0] => cat [1] => dog [2] => bird [3] => horse [4] => fish )
  38.   // Array ( [0] => horse [1] => cat )
  39.   // Array ( [0] => horse [1] => cat )
复制代码
Sorted Set(有序集合):
  1. <?php
  2.   //实例化redis
  3.   $redis = new Redis();
  4.   //连接
  5.   $redis->connect('127.0.0.1', 6379);
  6.   //有序集合
  7.   //添加元素
  8.   echo $redis->zadd('set', 1, 'cat');echo '<br>';
  9.   echo $redis->zadd('set', 2, 'dog');echo '<br>';
  10.   echo $redis->zadd('set', 3, 'fish');echo '<br>';
  11.   echo $redis->zadd('set', 4, 'dog');echo '<br>';
  12.   echo $redis->zadd('set', 4, 'bird');echo '<br>';
  13.   //返回集合中的所有元素
  14.   print_r($redis->zrange('set', 0, -1));echo '<br>';
  15.   print_r($redis->zrange('set', 0, -1, true));echo '<br>';
  16.   //返回元素的score值
  17.   echo $redis->zscore('set', 'dog');echo '<br>';
  18.   //返回存储的个数
  19.   echo $redis->zcard('set');echo '<br>';
  20.   //删除指定成员
  21.   $redis->zrem('set', 'cat');
  22.   print_r($redis->zrange('set', 0, -1));echo '<br>';
  23.   //返回集合中介于min和max之间的值的个数
  24.   print_r($redis->zcount('set', 3, 5));echo '<br>';
  25.   //返回有序集合中score介于min和max之间的值
  26.   print_r($redis->zrangebyscore('set', 3, 5));echo '<br>';
  27.   print_r($redis->zrangebyscore('set', 3, 5, ['withscores'=>true]));echo '<br>';
  28.   //返回集合中指定区间内所有的值
  29.   print_r($redis->zrevrange('set', 1, 2));echo '<br>';
  30.   print_r($redis->zrevrange('set', 1, 2, true));echo '<br>';
  31.   //有序集合中指定值的socre增加
  32.   echo $redis->zscore('set', 'dog');echo '<br>';
  33.   $redis->zincrby('set', 2, 'dog');
  34.   echo $redis->zscore('set', 'dog');echo '<br>';
  35.   //移除score值介于min和max之间的元素
  36.   print_r($redis->zrange('set', 0, -1, true));echo '<br>';
  37.   print_r($redis->zremrangebyscore('set', 3, 4));echo '<br>';
  38.   print_r($redis->zrange('set', 0, -1, true));echo '<br>';
  39.   //结果
  40.   // 1
  41.   // 0
  42.   // 0
  43.   // 0
  44.   // 0
  45.   // Array ( [0] => cat [1] => fish [2] => bird [3] => dog )
  46.   // Array ( [cat] => 1 [fish] => 3 [bird] => 4 [dog] => 4 )
  47.   // 4
  48.   // 4
  49.   // Array ( [0] => fish [1] => bird [2] => dog )
  50.   // 3
  51.   // Array ( [0] => fish [1] => bird [2] => dog )
  52.   // Array ( [fish] => 3 [bird] => 4 [dog] => 4 )
  53.   // Array ( [0] => bird [1] => fish )
  54.   // Array ( [bird] => 4 [fish] => 3 )
  55.   // 4
  56.   // 6
  57.   // Array ( [fish] => 3 [bird] => 4 [dog] => 6 )
  58.   // 2
  59.   // Array ( [dog] => 6 )
复制代码
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php+redis数据库程序设计技巧总结》、《php面向对象程序设计入门教程》、《PHP基本语法入门教程》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
晓枫资讯-科技资讯社区-免责声明
免责声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。
      1、注册用户在本社区发表、转载的任何作品仅代表其个人观点,不代表本社区认同其观点。
      2、管理员及版主有权在不事先通知或不经作者准许的情况下删除其在本社区所发表的文章。
      3、本社区的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,举报反馈:点击这里给我发消息进行删除处理。
      4、本社区一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
      5、以上声明内容的最终解释权归《晓枫资讯-科技资讯社区》所有。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

  • 打卡等级:热心大叔
  • 打卡总天数:203
  • 打卡月天数:0
  • 打卡总奖励:2995
  • 最近打卡:2023-08-27 06:14:36
等级头衔

等級:晓枫资讯-上等兵

在线时间
0 小时

积分成就
威望
0
贡献
369
主题
341
精华
0
金钱
4080
积分
736
注册时间
2022-12-23
最后登录
2025-6-1

发表于 2024-4-13 08:58:46 | 显示全部楼层
感谢楼主,顶。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
16
积分
12
注册时间
2022-12-29
最后登录
2022-12-29

发表于 2024-9-19 14:04:16 | 显示全部楼层
感谢楼主分享。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

  • 打卡等级:即来则安
  • 打卡总天数:18
  • 打卡月天数:0
  • 打卡总奖励:222
  • 最近打卡:2025-04-07 04:09:45
等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
258
积分
40
注册时间
2023-3-24
最后登录
2025-4-7

发表于 2025-3-20 17:08:13 | 显示全部楼层
路过,支持一下
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~
严禁发布广告,淫秽、色情、赌博、暴力、凶杀、恐怖、间谍及其他违反国家法律法规的内容。!晓枫资讯-社区
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1楼
2楼
3楼
4楼

手机版|晓枫资讯--科技资讯社区 本站已运行

CopyRight © 2022-2025 晓枫资讯--科技资讯社区 ( BBS.yzwlo.com ) . All Rights Reserved .

晓枫资讯--科技资讯社区

本站内容由用户自主分享和转载自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

如有侵权、违反国家法律政策行为,请联系我们,我们会第一时间及时清除和处理! 举报反馈邮箱:点击这里给我发消息

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表