当前位置:首页 > PHP教程 > php高级应用 > 列表

PHP操作Redis数据库常用方法(总结)

发布:smiling 来源: PHP粉丝网  添加日期:2022-05-29 07:33:47 浏览: 评论:0 

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

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

要让php能用上redis,首先就得安装redis扩展。

1.安装redis

git下载地址

https://github.com/MSOpenTech/redis/releases

2.测试redis

windows 运行(快捷键:windows键+R键),输入【cmd】命令,进入DOC操作系统窗口;

进入redis安装目录使用命令

2.1开启redis守护进程(进入redis安装目录)

redis-server.exe redis-windows-conf

2.2进入redis客户端(进入redis安装目录)

redis-cli.exe

3.安装php的redis扩展

下载地址

https://pecl.php.net/package/redis

根据phpinfo()信息选择适当的redis扩展压缩包

4.将redis扩展包的php_redis.dll和php_redis.pdb两个文件放在ext文件夹

5.修改php.ini文件

extension=php_redis.dll

6.验证是否开启redis扩展

查看phpinfo()信息,搜索redis

7.php连接并测试redis数据库(记得开启redis服务)

新建test.php

  1. <?php 
  2.  
  3.  $redis = new Redis(); 
  4.  
  5.  $redis->connect('127.0.0.1',6379);  
  6.  
  7.  $redis->set('name','klc'); 
  8.  
  9.  echo $redis->get('name'); 
  10.  
  11. ?> 

对数据类型的操作

Strng(字符串):

  1. <?php 
  2.  
  3. // 设置一个字符串的值 
  4.  
  5. $redis->set('cat', 111); 
  6.  
  7. //获取一个字符串的值 
  8.  
  9. echo $redis->get('cat'); // 111 
  10.  
  11. // 重复set 
  12.  
  13. $redis->set('cat', 222); 
  14.  
  15. echo $redis->get('cat'); // 222 

List(列表):

  1. //列表 
  2.  
  3. //存储数据到列表中 
  4.  
  5. $redis->lpush('list''html'); 
  6.  
  7. $redis->lpush('list''css'); 
  8.  
  9. $redis->lpush('list''php'); 
  10.  
  11. //获取列表中所有的值 
  12.  
  13. $list = $redis->lrange('list', 0, -1); 
  14.  
  15. print_r($list);echo '<br>';  
  16.  
  17. //从右侧加入一个 
  18.  
  19. $redis->rpush('list''mysql'); 
  20.  
  21. $list = $redis->lrange('list', 0, -1); 
  22.  
  23. print_r($list);echo '<br>'
  24.  
  25. //从左侧弹出一个 
  26.  
  27. $redis->lpop('list'); 
  28.  
  29. $list = $redis->lrange('list', 0, -1); 
  30.  
  31. print_r($list);echo '<br>'
  32.  
  33. //从右侧弹出一个 
  34.  
  35. $redis->rpop('list'); 
  36.  
  37. $list = $redis->lrange('list', 0, -1); 
  38.  
  39. print_r($list);echo '<br>'
  40.  
  41. // 结果 
  42.  
  43. // Array ( [0] => php [1] => css [2] => html ) 
  44.  
  45. // Array ( [0] => php [1] => css [2] => html [3] => mysql ) 
  46.  
  47. // Array ( [0] => css [1] => html [2] => mysql ) 
  48.  
  49. // Array ( [0] => css [1] => html ) 
  50.  
  51.  
  52. <?php 
  53.  
  54.   //实例化redis 
  55.  
  56.   $redis = new Redis(); 
  57.  
  58.   //连接 
  59.  
  60.   $redis->connect('127.0.0.1', 6379); 
  61.  
  62.   //列表 
  63.  
  64.   //存储数据到列表中 
  65.  
  66.   $redis->lpush('list''html'); 
  67.  
  68.   $redis->lpush('list''css'); 
  69.  
  70.   $redis->lpush('list''php'); 
  71.  
  72.   $redis->lpush('list''mysql'); 
  73.  
  74.   $redis->lpush('list''javascript'); 
  75.  
  76.   $redis->lpush('list''ajax'); 
  77.  
  78.   //获取列表中所有的值 
  79.  
  80.   $list = $redis->lrange('list', 0, -1); 
  81.  
  82.   print_r($list);echo '<br>';  
  83.  
  84.   //获取列表的长度 
  85.  
  86.   $length = $redis->lsize('list'); 
  87.  
  88.   echo $length;echo '<br>'
  89.  
  90.   //返回列表key中index位置的值 
  91.  
  92.   echo $redis->lget('list', 2);echo '<br>'
  93.  
  94.   echo $redis->lindex('list', 2);echo '<br>'
  95.  
  96.   //设置列表中index位置的值 
  97.  
  98.   echo $redis->lset('list', 2, 'linux');echo '<br>'
  99.  
  100.   $list = $redis->lrange('list', 0, -1); 
  101.  
  102.   print_r($list);echo '<br>'
  103.  
  104.   //返回key中从start到end位置间的元素 
  105.  
  106.   $list = $redis->lrange('list', 0, 2); 
  107.  
  108.   print_r($list);echo '<br>'
  109.  
  110.   $list = $redis->lgetrange('list', 0, 2); 
  111.  
  112.   print_r($list);echo '<br>'
  113.  
  114.   //截取链表中start到end的元素 
  115.  
  116. //截取列表后列表发生变化,列表保留截取的元素,其余的删除 
  117.  
  118.   $list = $redis->ltrim('list', 0, 1); 
  119.  
  120.   print_r($list);echo '<br>'
  121.  
  122.   $list = $redis->lrange('list', 0, -1); 
  123.  
  124.   print_r($list);echo '<br>'
  125.  
  126.   // 结果 
  127.  
  128.   // Array ( [0] => ajax [1] => javascript [2] => mysql [3] => php [4] => css [5] => html ) 
  129.  
  130.   // 6 
  131.  
  132.   // mysql 
  133.  
  134.   // mysql 
  135.  
  136.   // 1 
  137.  
  138.   // Array ( [0] => ajax [1] => javascript [2] => linux [3] => php [4] => css [5] => html ) 
  139.  
  140.   // Array ( [0] => ajax [1] => javascript [2] => linux ) 
  141.  
  142.   // Array ( [0] => ajax [1] => javascript [2] => linux ) 
  143.  
  144.   // 1 
  145.  
  146.   // Array ( [0] => ajax [1] => javascript ) 
  147.  
  148.  
  149. <?php 
  150.  
  151.   //实例化redis 
  152.  
  153.   $redis = new Redis(); 
  154.  
  155.   //连接 
  156.  
  157.   $redis->connect('127.0.0.1', 6379); 
  158.  
  159.   //列表 
  160.  
  161.   //存储数据到列表中 
  162.  
  163.   $redis->lpush('list''html'); 
  164.  
  165.   $redis->lpush('list''html'); 
  166.  
  167.   $redis->lpush('list''html'); 
  168.  
  169.   $redis->lpush('list''css'); 
  170.  
  171.   $redis->lpush('list''php'); 
  172.  
  173.   $redis->lpush('list''mysql'); 
  174.  
  175.   $redis->lpush('list''javascript'); 
  176.  
  177.   $redis->lpush('list''html'); 
  178.  
  179.   $redis->lpush('list''html'); 
  180.  
  181.   $redis->lpush('list''html'); 
  182.  
  183.   $redis->lpush('list''ajax'); 
  184.  
  185.   //获取列表中所有的值 
  186.  
  187.   $list = $redis->lrange('list', 0, -1); 
  188.  
  189.   print_r($list);echo '<br>';  
  190.  
  191.   //删除列表中count个值为value的元素 
  192.  
  193.   //从左向右删 
  194.  
  195.   $redis->lrem('list''html', 2); 
  196.  
  197.   $list = $redis->lrange('list', 0, -1); 
  198.  
  199.   print_r($list);echo '<br>';  
  200.  
  201.   //从右向左删 
  202.  
  203.   $redis->lrem('list''html', -2); 
  204.  
  205.   $list = $redis->lrange('list', 0, -1); 
  206.  
  207.   print_r($list);echo '<br>';  
  208.  
  209.   //删除所有 
  210.  
  211.   $redis->lrem('list''html', 0); 
  212.  
  213.   $list = $redis->lrange('list', 0, -1); 
  214.  
  215.   print_r($list);echo '<br>'
  216.  
  217.   // 结果 
  218.  
  219.   // Array ( [0] => ajax [1] => html [2] => html [3] => html [4] => javascript [5] => mysql [6] => php [7] => css [8] => html [9] => html [10] => html ) 
  220.  
  221.   // Array ( [0] => ajax [1] => html [2] => javascript [3] => mysql [4] => php [5] => css [6] => html [7] => html [8] => html ) 
  222.  
  223.   // Array ( [0] => ajax [1] => html [2] => javascript [3] => mysql [4] => php [5] => css [6] => html ) 
  224.  
  225.   // Array ( [0] => ajax [1] => javascript [2] => mysql [3] => php [4] => css ) 
  226.  
  227. Hash(字典): 
  228.  
  229. <?php 
  230.  
  231.   //实例化redis 
  232.  
  233.   $redis = new Redis(); 
  234.  
  235.   //连接 
  236.  
  237.   $redis->connect('127.0.0.1', 6379); 
  238.  
  239.   //字典 
  240.  
  241.   //给hash表中某个key设置value 
  242.  
  243.   //如果没有则设置成功,返回1,如果存在会替换原有的值,返回0,失败返回0 
  244.  
  245.   echo $redis->hset('hash''cat''cat');echo '<br>'
  246.  
  247.   echo $redis->hset('hash''cat''cat');echo '<br>'
  248.  
  249.   echo $redis->hset('hash''cat''cat1');echo '<br>'
  250.  
  251.   echo $redis->hset('hash''dog''dog');echo '<br>'
  252.  
  253.   echo $redis->hset('hash''bird''bird');echo '<br>'
  254.  
  255.   echo $redis->hset('hash''monkey''monkey');echo '<br>'
  256.  
  257.   //获取hash中某个key的值 
  258.  
  259.   echo $redis->hget('hash''cat');echo '<br>'
  260.  
  261.   //获取hash中所有的keys 
  262.  
  263.   $arr = $redis->hkeys('hash'); 
  264.  
  265.   print_r($arr);echo '<br>'
  266.  
  267.   //获取hash中所有的值 顺序是随机的 
  268.  
  269.   $arr = $redis->hvals('hash'); 
  270.  
  271.   print_r($arr);echo '<br>'
  272.  
  273.   //获取一个hash中所有的key和value 顺序是随机的 
  274.  
  275.   $arr = $redis->hgetall('hash'); 
  276.  
  277.   print_r($arr);echo '<br>'
  278.  
  279.   //获取hash中key的数量 
  280.  
  281.   echo $redis->hlen('hash');echo '<br>'
  282.  
  283.   //删除hash中一个key 如果表不存在或key不存在则返回false 
  284.  
  285.   echo $redis->hdel('hash''dog');echo '<br>'
  286.  
  287.   var_dump($redis->hdel('hash''rabbit'));echo '<br>'
  288.  
  289.   // 结果 
  290.  
  291.   // 1 
  292.  
  293.   // 0 
  294.  
  295.   // 0 
  296.  
  297.   // 1 
  298.  
  299.   // 1 
  300.  
  301.   // 1 
  302.  
  303.   // cat1 
  304.  
  305.   // Array ( [0] => cat [1] => dog [2] => bird [3] => monkey ) 
  306.  
  307.   // Array ( [0] => cat1 [1] => dog [2] => bird [3] => monkey ) 
  308.  
  309.   // Array ( [cat] => cat1 [dog] => dog [bird] => bird [monkey] => monkey ) 
  310.  
  311.   // 4 
  312.  
  313.   // 1 
  314.  
  315.   // int(0) 
  316.  
  317. <?php 
  318.  
  319.   //实例化redis 
  320.  
  321.   $redis = new Redis(); 
  322.  
  323.   //连接 
  324.  
  325.   $redis->connect('127.0.0.1', 6379); 
  326.  
  327.   //字典 
  328.  
  329.   //批量设置多个key的值 
  330.  
  331.   $arr = [1=>1, 2=>2, 3=>3, 4=>4, 5=>5]; 
  332.  
  333.   $redis->hmset('hash'$arr); 
  334.  
  335.   print_r($redis->hgetall('hash'));echo '<br>'
  336.  
  337.   // 批量获得额多个key的值 
  338.  
  339.   $arr = [1, 2, 3, 5]; 
  340.  
  341.   $hash = $redis->hmget('hash'$arr); 
  342.  
  343.   print_r($hash);echo '<br>'
  344.  
  345.   //检测hash中某个key知否存在 
  346.  
  347.   echo $redis->hexists('hash''1');echo '<br>'
  348.  
  349.   var_dump($redis->hexists('hash''cat'));echo '<br>'
  350.  
  351.   print_r($redis->hgetall('hash'));echo '<br>'
  352.  
  353.   //给hash表中key增加一个整数值 
  354.  
  355.   $redis->hincrby('hash''1', 1); 
  356.  
  357.   print_r($redis->hgetall('hash'));echo '<br>'
  358.  
  359.   //给hash中的某个key增加一个浮点值 
  360.  
  361.   $redis->hincrbyfloat('hash', 2, 1.3); 
  362.  
  363.   print_r($redis->hgetall('hash'));echo '<br>'
  364.  
  365.   //结果 
  366.  
  367.   // Array ( [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 ) 
  368.  
  369.   // Array ( [1] => 1 [2] => 2 [3] => 3 [5] => 5 ) 
  370.  
  371.   // 1 
  372.  
  373.   // bool(false) 
  374.  
  375.   // Array ( [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 ) 
  376.  
  377.   // Array ( [1] => 2 [2] => 2 [3] => 3 [4] => 4 [5] => 5 ) 
  378.  
  379.   // Array ( [1] => 2 [2] => 3.3 [3] => 3 [4] => 4 [5] => 5 ) 

Set(集合):

  1. <?php 
  2.  
  3.   //实例化redis 
  4.  
  5.   $redis = new Redis(); 
  6.  
  7.   //连接 
  8.  
  9.   $redis->connect('127.0.0.1', 6379); 
  10.  
  11.   //集合 
  12.  
  13.   // 添加一个元素 
  14.  
  15.   echo $redis->sadd('set''cat');echo '<br>'
  16.  
  17.   echo $redis->sadd('set''cat');echo '<br>'
  18.  
  19.   echo $redis->sadd('set''dog');echo '<br>'
  20.  
  21.   echo $redis->sadd('set''rabbit');echo '<br>'
  22.  
  23.   echo $redis->sadd('set''bear');echo '<br>'
  24.  
  25.   echo $redis->sadd('set''horse');echo '<br>'
  26.  
  27.   // 查看集合中所有的元素 
  28.  
  29.   $set = $redis->smembers('set'); 
  30.  
  31.   print_r($set);echo '<br>'
  32.  
  33.   //删除集合中的value 
  34.  
  35.   echo $redis->srem('set''cat');echo '<br>'
  36.  
  37.   var_dump($redis->srem('set''bird'));echo '<br>'
  38.  
  39.   $set = $redis->smembers('set'); 
  40.  
  41.   print_r($set);echo '<br>'
  42.  
  43.   //判断元素是否是set的成员 
  44.  
  45.   var_dump($redis->sismember('set''dog'));echo '<br>'
  46.  
  47.   var_dump($redis->sismember('set''bird'));echo '<br>'
  48.  
  49.   //查看集合中成员的数量 
  50.  
  51.   echo $redis->scard('set');echo '<br>'
  52.  
  53.   //移除并返回集合中的一个随机元素(返回被移除的元素) 
  54.  
  55.   echo $redis->spop('set');echo '<br>'
  56.  
  57.   print_r($redis->smembers('set'));echo '<br>'
  58.  
  59.   // 结果 
  60.  
  61.   // 1 
  62.  
  63.   // 0 
  64.  
  65.   // 1 
  66.  
  67.   // 1 
  68.  
  69.   // 1 
  70.  
  71.   // 1 
  72.  
  73.   // Array ( [0] => rabbit [1] => cat [2] => bear [3] => dog [4] => horse ) 
  74.  
  75.   // 1 
  76.  
  77.   // int(0) 
  78.  
  79.   // Array ( [0] => dog [1] => rabbit [2] => horse [3] => bear ) 
  80.  
  81.   // bool(true) 
  82.  
  83.   // bool(false) 
  84.  
  85.   // 4 
  86.  
  87.   // bear 
  88.  
  89.   // Array ( [0] => dog [1] => rabbit [2] => horse ) 
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130. <?php 
  131.  
  132.   //实例化redis 
  133.  
  134.   $redis = new Redis(); 
  135.  
  136.   //连接 
  137.  
  138.   $redis->connect('127.0.0.1', 6379); 
  139.  
  140.   //集合 
  141.  
  142.   $redis->sadd('set''horse'); 
  143.  
  144.   $redis->sadd('set''cat'); 
  145.  
  146.   $redis->sadd('set''dog'); 
  147.  
  148.   $redis->sadd('set''bird'); 
  149.  
  150.   $redis->sadd('set2''fish'); 
  151.  
  152.   $redis->sadd('set2''dog'); 
  153.  
  154.   $redis->sadd('set2''bird'); 
  155.  
  156.   print_r($redis->smembers('set'));echo '<br>'
  157.  
  158.   print_r($redis->smembers('set2'));echo '<br>'
  159.  
  160.   //返回集合的交集 
  161.  
  162.   print_r($redis->sinter('set''set2'));echo '<br>'
  163.  
  164.   //执行交集操作 并结果放到一个集合中 
  165.  
  166.   $redis->sinterstore('output''set''set2'); 
  167.  
  168.   print_r($redis->smembers('output'));echo '<br>'
  169.  
  170.   //返回集合的并集 
  171.  
  172.   print_r($redis->sunion('set''set2'));echo '<br>'
  173.  
  174.   //执行并集操作 并结果放到一个集合中 
  175.  
  176.   $redis->sunionstore('output''set''set2'); 
  177.  
  178.   print_r($redis->smembers('output'));echo '<br>'
  179.  
  180.   //返回集合的差集 
  181.  
  182.   print_r($redis->sdiff('set''set2'));echo '<br>'
  183.  
  184.   //执行差集操作 并结果放到一个集合中 
  185.  
  186.   $redis->sdiffstore('output''set''set2'); 
  187.  
  188.   print_r($redis->smembers('output'));echo '<br>'
  189.  
  190.   // 结果 
  191.  
  192.   // Array ( [0] => cat [1] => dog [2] => bird [3] => horse ) 
  193.  
  194.   // Array ( [0] => bird [1] => dog [2] => fish ) 
  195.  
  196.   // Array ( [0] => bird [1] => dog ) 
  197.  
  198.   // Array ( [0] => dog [1] => bird ) 
  199.  
  200.   // Array ( [0] => cat [1] => dog [2] => bird [3] => horse [4] => fish ) 
  201.  
  202.   // Array ( [0] => cat [1] => dog [2] => bird [3] => horse [4] => fish ) 
  203.  
  204.   // Array ( [0] => horse [1] => cat ) 
  205.  
  206.   // Array ( [0] => horse [1] => cat ) 

Sorted Set(有序集合):

  1. <?php 
  2.  
  3.   //实例化redis 
  4.  
  5.   $redis = new Redis(); 
  6.  
  7.   //连接 
  8.  
  9.   $redis->connect('127.0.0.1', 6379); 
  10.  
  11.   //有序集合 
  12.  
  13.   //添加元素 
  14.  
  15.   echo $redis->zadd('set', 1, 'cat');echo '<br>'
  16.  
  17.   echo $redis->zadd('set', 2, 'dog');echo '<br>'
  18.  
  19.   echo $redis->zadd('set', 3, 'fish');echo '<br>'
  20.  
  21.   echo $redis->zadd('set', 4, 'dog');echo '<br>'
  22.  
  23.   echo $redis->zadd('set', 4, 'bird');echo '<br>'
  24.  
  25.   //返回集合中的所有元素 
  26.  
  27.   print_r($redis->zrange('set', 0, -1));echo '<br>'
  28.  
  29.   print_r($redis->zrange('set', 0, -1, true));echo '<br>'
  30.  
  31.   //返回元素的score值 
  32.  
  33.   echo $redis->zscore('set''dog');echo '<br>'
  34.  
  35.   //返回存储的个数 
  36.  
  37.   echo $redis->zcard('set');echo '<br>'
  38.  
  39.   //删除指定成员 
  40.  
  41.   $redis->zrem('set''cat'); 
  42.  
  43.   print_r($redis->zrange('set', 0, -1));echo '<br>'
  44.  
  45.   //返回集合中介于min和max之间的值的个数 
  46.  
  47.   print_r($redis->zcount('set', 3, 5));echo '<br>'
  48.  
  49.   //返回有序集合中score介于min和max之间的值 
  50.  
  51.   print_r($redis->zrangebyscore('set', 3, 5));echo '<br>'
  52.  
  53.   print_r($redis->zrangebyscore('set', 3, 5, ['withscores'=>true]));echo '<br>'
  54.  
  55.   //返回集合中指定区间内所有的值 
  56.  
  57.   print_r($redis->zrevrange('set', 1, 2));echo '<br>'
  58.  
  59.   print_r($redis->zrevrange('set', 1, 2, true));echo '<br>'
  60.  
  61.   //有序集合中指定值的socre增加 
  62.  
  63.   echo $redis->zscore('set''dog');echo '<br>'
  64.  
  65.   $redis->zincrby('set', 2, 'dog'); 
  66.  
  67.   echo $redis->zscore('set''dog');echo '<br>'
  68.  
  69.   //移除score值介于min和max之间的元素 
  70.  
  71.   print_r($redis->zrange('set', 0, -1, true));echo '<br>'
  72.  
  73.   print_r($redis->zremrangebyscore('set', 3, 4));echo '<br>'
  74.  
  75.   print_r($redis->zrange('set', 0, -1, true));echo '<br>'
  76.  
  77.   //结果 
  78.  
  79.   // 1 
  80.  
  81.   // 0 
  82.  
  83.   // 0 
  84.  
  85.   // 0 
  86.  
  87.   // 0 
  88.  
  89.   // Array ( [0] => cat [1] => fish [2] => bird [3] => dog ) 
  90.  
  91.   // Array ( [cat] => 1 [fish] => 3 [bird] => 4 [dog] => 4 ) 
  92.  
  93.   // 4 
  94.  
  95.   // 4 
  96.  
  97.   // Array ( [0] => fish [1] => bird [2] => dog ) 
  98.  
  99.   // 3 
  100.  
  101.   // Array ( [0] => fish [1] => bird [2] => dog ) 
  102.  
  103.   // Array ( [fish] => 3 [bird] => 4 [dog] => 4 ) 
  104.  
  105.   // Array ( [0] => bird [1] => fish ) 
  106.  
  107.   // Array ( [bird] => 4 [fish] => 3 ) 
  108.  
  109.   // 4 
  110.  
  111.   // 6 
  112.  
  113.   // Array ( [fish] => 3 [bird] => 4 [dog] => 6 ) 
  114.  
  115.   // 2 
  116.  
  117.   // Array ( [dog] => 6 )

Tags: PHP操作Redis

分享到: