当前位置:Gxlcms > PHP教程 > PHP操作Redis数据库常用方法

PHP操作Redis数据库常用方法

时间:2021-07-01 10:21:17 帮助过:41人阅读

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

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

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

1、安装redis

git下载地址

2、测试redis

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

进入redis安装目录使用命令

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

  1. redis-server.exe redis-windows-conf

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

  1. redis-cli.exe

3、安装php的redis扩展

下载地址

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

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

5、修改php.ini文件

  1. extension=php_redis.dll

6.验证是否开启redis扩展

查看phpinfo()信息,搜索redis

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

新建test.php

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

对数据类型的操作

Strng(字符串):

  1. <?php
  2. // 设置一个字符串的值
  3. $redis->set('cat', 111);
  4. //获取一个字符串的值
  5. echo $redis->get('cat'); // 111
  6. // 重复set
  7. $redis->set('cat', 222);
  8. 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 )
  26. <?php
  27. //实例化redis
  28. $redis = new Redis();
  29. //连接
  30. $redis->connect('127.0.0.1', 6379);
  31. //列表
  32. //存储数据到列表中
  33. $redis->lpush('list', 'html');
  34. $redis->lpush('list', 'css');
  35. $redis->lpush('list', 'php');
  36. $redis->lpush('list', 'mysql');
  37. $redis->lpush('list', 'javascript');
  38. $redis->lpush('list', 'ajax');
  39. //获取列表中所有的值
  40. $list = $redis->lrange('list', 0, -1);
  41. print_r($list);echo '<br>';
  42. //获取列表的长度
  43. $length = $redis->lsize('list');
  44. echo $length;echo '<br>';
  45. //返回列表key中index位置的值
  46. echo $redis->lget('list', 2);echo '<br>';
  47. echo $redis->lindex('list', 2);echo '<br>';
  48. //设置列表中index位置的值
  49. echo $redis->lset('list', 2, 'linux');echo '<br>';
  50. $list = $redis->lrange('list', 0, -1);
  51. print_r($list);echo '<br>';
  52. //返回key中从start到end位置间的元素
  53. $list = $redis->lrange('list', 0, 2);
  54. print_r($list);echo '<br>';
  55. $list = $redis->lgetrange('list', 0, 2);
  56. print_r($list);echo '<br>';
  57. //截取链表中start到end的元素
  58. //截取列表后列表发生变化,列表保留截取的元素,其余的删除
  59. $list = $redis->ltrim('list', 0, 1);
  60. print_r($list);echo '<br>';
  61. $list = $redis->lrange('list', 0, -1);
  62. print_r($list);echo '<br>';
  63. // 结果
  64. // Array ( [0] => ajax [1] => javascript [2] => mysql [3] => php [4] => css [5] => html )
  65. // 6
  66. // mysql
  67. // mysql
  68. // 1
  69. // Array ( [0] => ajax [1] => javascript [2] => linux [3] => php [4] => css [5] => html )
  70. // Array ( [0] => ajax [1] => javascript [2] => linux )
  71. // Array ( [0] => ajax [1] => javascript [2] => linux )
  72. // 1
  73. // Array ( [0] => ajax [1] => javascript )
  74. <?php
  75. //实例化redis
  76. $redis = new Redis();
  77. //连接
  78. $redis->connect('127.0.0.1', 6379);
  79. //列表
  80. //存储数据到列表中
  81. $redis->lpush('list', 'html');
  82. $redis->lpush('list', 'html');
  83. $redis->lpush('list', 'html');
  84. $redis->lpush('list', 'css');
  85. $redis->lpush('list', 'php');
  86. $redis->lpush('list', 'mysql');
  87. $redis->lpush('list', 'javascript');
  88. $redis->lpush('list', 'html');
  89. $redis->lpush('list', 'html');
  90. $redis->lpush('list', 'html');
  91. $redis->lpush('list', 'ajax');
  92. //获取列表中所有的值
  93. $list = $redis->lrange('list', 0, -1);
  94. print_r($list);echo '<br>';
  95. //删除列表中count个值为value的元素
  96. //从左向右删
  97. $redis->lrem('list', 'html', 2);
  98. $list = $redis->lrange('list', 0, -1);
  99. print_r($list);echo '<br>';
  100. //从右向左删
  101. $redis->lrem('list', 'html', -2);
  102. $list = $redis->lrange('list', 0, -1);
  103. print_r($list);echo '<br>';
  104. //删除所有
  105. $redis->lrem('list', 'html', 0);
  106. $list = $redis->lrange('list', 0, -1);
  107. print_r($list);echo '<br>';
  108. // 结果
  109. // Array ( [0] => ajax [1] => html [2] => html [3] => html [4] => javascript [5] => mysql [6] => php [7] => css [8] => html [9] => html [10] => html )
  110. // Array ( [0] => ajax [1] => html [2] => javascript [3] => mysql [4] => php [5] => css [6] => html [7] => html [8] => html )
  111. // Array ( [0] => ajax [1] => html [2] => javascript [3] => mysql [4] => php [5] => css [6] => html )
  112. // 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)
  45. <?php
  46. //实例化redis
  47. $redis = new Redis();
  48. //连接
  49. $redis->connect('127.0.0.1', 6379);
  50. //字典
  51. //批量设置多个key的值
  52. $arr = [1=>1, 2=>2, 3=>3, 4=>4, 5=>5];
  53. $redis->hmset('hash', $arr);
  54. print_r($redis->hgetall('hash'));echo '<br>';
  55. // 批量获得额多个key的值
  56. $arr = [1, 2, 3, 5];
  57. $hash = $redis->hmget('hash', $arr);
  58. print_r($hash);echo '<br>';
  59. //检测hash中某个key知否存在
  60. echo $redis->hexists('hash', '1');echo '<br>';
  61. var_dump($redis->hexists('hash', 'cat'));echo '<br>';
  62. print_r($redis->hgetall('hash'));echo '<br>';
  63. //给hash表中key增加一个整数值
  64. $redis->hincrby('hash', '1', 1);
  65. print_r($redis->hgetall('hash'));echo '<br>';
  66. //给hash中的某个key增加一个浮点值
  67. $redis->hincrbyfloat('hash', 2, 1.3);
  68. print_r($redis->hgetall('hash'));echo '<br>';
  69. //结果
  70. // Array ( [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 )
  71. // Array ( [1] => 1 [2] => 2 [3] => 3 [5] => 5 )
  72. // 1
  73. // bool(false)
  74. // Array ( [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 )
  75. // Array ( [1] => 2 [2] => 2 [3] => 3 [4] => 4 [5] => 5 )
  76. // 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数据库常用方法的详细内容,更多请关注Gxlcms其它相关文章!

人气教程排行