Home  >  Article  >  Backend Development  >  Common methods for operating Redis database with PHP (summary)

Common methods for operating Redis database with PHP (summary)

藏色散人
藏色散人forward
2020-01-26 13:24:242669browse

Common methods for operating Redis database with PHP (summary)

Redis is an open source log-type Key-Value database written in ANSI C language, supports network, can be memory-based and persistent, and provides APIs in multiple languages.

The data types supported by Redis are Stirng(string), List(list), Hash(dictionary), Set(set), Sorted Set(ordered set);

To make PHP use redis, you must first Install redis extension.

1. Install redis

git download address

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

2. Test redis

Run windows (shortcut key: Windows key R key), enter the [cmd] command to enter the DOC operating system window;

Enter the redis installation directory and use the command

2.1 Start the redis daemon (enter the redis installation directory)

redis-server.exe redis-windows-conf

2.2 Enter the redis client (enter the redis installation directory)

redis-cli.exe

3. Install the redis extension of php

Download address

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

Select the appropriate redis expansion compression package based on phpinfo() information

4. The two files php_redis.dll and php_redis.pdb of the redis expansion package are placed in the ext folder

5. Modify the php.ini file

extension=php_redis.dll

6. Verify whether the redis extension is enabled

View phpinfo() information, search for redis

7.php connection and test the redis database (remember to enable the redis service)

New test.php

<?php
 $redis = new Redis();
 $redis->connect(&#39;127.0.0.1&#39;,6379); 
 $redis->set(&#39;name&#39;,&#39;klc&#39;);
 echo $redis->get(&#39;name&#39;);
?>

Operations on data types

Strng (string):

<?php

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

List(List):

//列表
//存储数据到列表中
$redis->lpush(&#39;list&#39;, &#39;html&#39;);
$redis->lpush(&#39;list&#39;, &#39;css&#39;);
$redis->lpush(&#39;list&#39;, &#39;php&#39;);
//获取列表中所有的值
$list = $redis->lrange(&#39;list&#39;, 0, -1);
print_r($list);echo &#39;<br>&#39;; 
//从右侧加入一个
$redis->rpush(&#39;list&#39;, &#39;mysql&#39;);
$list = $redis->lrange(&#39;list&#39;, 0, -1);
print_r($list);echo &#39;<br>&#39;;
//从左侧弹出一个
$redis->lpop(&#39;list&#39;);
$list = $redis->lrange(&#39;list&#39;, 0, -1);
print_r($list);echo &#39;<br>&#39;;
//从右侧弹出一个
$redis->rpop(&#39;list&#39;);
$list = $redis->lrange(&#39;list&#39;, 0, -1);
print_r($list);echo &#39;<br>&#39;;
// 结果
// 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(&#39;127.0.0.1&#39;, 6379);
  //列表
  //存储数据到列表中
  $redis->lpush(&#39;list&#39;, &#39;html&#39;);
  $redis->lpush(&#39;list&#39;, &#39;css&#39;);
  $redis->lpush(&#39;list&#39;, &#39;php&#39;);
  $redis->lpush(&#39;list&#39;, &#39;mysql&#39;);
  $redis->lpush(&#39;list&#39;, &#39;javascript&#39;);
  $redis->lpush(&#39;list&#39;, &#39;ajax&#39;);
  //获取列表中所有的值
  $list = $redis->lrange(&#39;list&#39;, 0, -1);
  print_r($list);echo &#39;<br>&#39;; 
  //获取列表的长度
  $length = $redis->lsize(&#39;list&#39;);
  echo $length;echo &#39;<br>&#39;;
  //返回列表key中index位置的值
  echo $redis->lget(&#39;list&#39;, 2);echo &#39;<br>&#39;;
  echo $redis->lindex(&#39;list&#39;, 2);echo &#39;<br>&#39;;
  //设置列表中index位置的值
  echo $redis->lset(&#39;list&#39;, 2, &#39;linux&#39;);echo &#39;<br>&#39;;
  $list = $redis->lrange(&#39;list&#39;, 0, -1);
  print_r($list);echo &#39;<br>&#39;;
  //返回key中从start到end位置间的元素
  $list = $redis->lrange(&#39;list&#39;, 0, 2);
  print_r($list);echo &#39;<br>&#39;;
  $list = $redis->lgetrange(&#39;list&#39;, 0, 2);
  print_r($list);echo &#39;<br>&#39;;
  //截取链表中start到end的元素
//截取列表后列表发生变化,列表保留截取的元素,其余的删除
  $list = $redis->ltrim(&#39;list&#39;, 0, 1);
  print_r($list);echo &#39;<br>&#39;;
  $list = $redis->lrange(&#39;list&#39;, 0, -1);
  print_r($list);echo &#39;<br>&#39;;
  // 结果
  // 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(&#39;127.0.0.1&#39;, 6379);
  //列表
  //存储数据到列表中
  $redis->lpush(&#39;list&#39;, &#39;html&#39;);
  $redis->lpush(&#39;list&#39;, &#39;html&#39;);
  $redis->lpush(&#39;list&#39;, &#39;html&#39;);
  $redis->lpush(&#39;list&#39;, &#39;css&#39;);
  $redis->lpush(&#39;list&#39;, &#39;php&#39;);
  $redis->lpush(&#39;list&#39;, &#39;mysql&#39;);
  $redis->lpush(&#39;list&#39;, &#39;javascript&#39;);
  $redis->lpush(&#39;list&#39;, &#39;html&#39;);
  $redis->lpush(&#39;list&#39;, &#39;html&#39;);
  $redis->lpush(&#39;list&#39;, &#39;html&#39;);
  $redis->lpush(&#39;list&#39;, &#39;ajax&#39;);
  //获取列表中所有的值
  $list = $redis->lrange(&#39;list&#39;, 0, -1);
  print_r($list);echo &#39;<br>&#39;; 
  //删除列表中count个值为value的元素
  //从左向右删
  $redis->lrem(&#39;list&#39;, &#39;html&#39;, 2);
  $list = $redis->lrange(&#39;list&#39;, 0, -1);
  print_r($list);echo &#39;<br>&#39;; 
  //从右向左删
  $redis->lrem(&#39;list&#39;, &#39;html&#39;, -2);
  $list = $redis->lrange(&#39;list&#39;, 0, -1);
  print_r($list);echo &#39;<br>&#39;; 
  //删除所有
  $redis->lrem(&#39;list&#39;, &#39;html&#39;, 0);
  $list = $redis->lrange(&#39;list&#39;, 0, -1);
  print_r($list);echo &#39;<br>&#39;;
  // 结果
  // 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(Dictionary):

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

<?php
  //实例化redis
  $redis = new Redis();
  //连接
  $redis->connect(&#39;127.0.0.1&#39;, 6379);
  //集合
  // 添加一个元素
  echo $redis->sadd(&#39;set&#39;, &#39;cat&#39;);echo &#39;<br>&#39;;
  echo $redis->sadd(&#39;set&#39;, &#39;cat&#39;);echo &#39;<br>&#39;;
  echo $redis->sadd(&#39;set&#39;, &#39;dog&#39;);echo &#39;<br>&#39;;
  echo $redis->sadd(&#39;set&#39;, &#39;rabbit&#39;);echo &#39;<br>&#39;;
  echo $redis->sadd(&#39;set&#39;, &#39;bear&#39;);echo &#39;<br>&#39;;
  echo $redis->sadd(&#39;set&#39;, &#39;horse&#39;);echo &#39;<br>&#39;;
  // 查看集合中所有的元素
  $set = $redis->smembers(&#39;set&#39;);
  print_r($set);echo &#39;<br>&#39;;
  //删除集合中的value
  echo $redis->srem(&#39;set&#39;, &#39;cat&#39;);echo &#39;<br>&#39;;
  var_dump($redis->srem(&#39;set&#39;, &#39;bird&#39;));echo &#39;<br>&#39;;
  $set = $redis->smembers(&#39;set&#39;);
  print_r($set);echo &#39;<br>&#39;;
  //判断元素是否是set的成员
  var_dump($redis->sismember(&#39;set&#39;, &#39;dog&#39;));echo &#39;<br>&#39;;
  var_dump($redis->sismember(&#39;set&#39;, &#39;bird&#39;));echo &#39;<br>&#39;;
  //查看集合中成员的数量
  echo $redis->scard(&#39;set&#39;);echo &#39;<br>&#39;;
  //移除并返回集合中的一个随机元素(返回被移除的元素)
  echo $redis->spop(&#39;set&#39;);echo &#39;<br>&#39;;
  print_r($redis->smembers(&#39;set&#39;));echo &#39;<br>&#39;;
  // 结果
  // 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(&#39;127.0.0.1&#39;, 6379);
  //集合
  $redis->sadd(&#39;set&#39;, &#39;horse&#39;);
  $redis->sadd(&#39;set&#39;, &#39;cat&#39;);
  $redis->sadd(&#39;set&#39;, &#39;dog&#39;);
  $redis->sadd(&#39;set&#39;, &#39;bird&#39;);
  $redis->sadd(&#39;set2&#39;, &#39;fish&#39;);
  $redis->sadd(&#39;set2&#39;, &#39;dog&#39;);
  $redis->sadd(&#39;set2&#39;, &#39;bird&#39;);
  print_r($redis->smembers(&#39;set&#39;));echo &#39;<br>&#39;;
  print_r($redis->smembers(&#39;set2&#39;));echo &#39;<br>&#39;;
  //返回集合的交集
  print_r($redis->sinter(&#39;set&#39;, &#39;set2&#39;));echo &#39;<br>&#39;;
  //执行交集操作 并结果放到一个集合中
  $redis->sinterstore(&#39;output&#39;, &#39;set&#39;, &#39;set2&#39;);
  print_r($redis->smembers(&#39;output&#39;));echo &#39;<br>&#39;;
  //返回集合的并集
  print_r($redis->sunion(&#39;set&#39;, &#39;set2&#39;));echo &#39;<br>&#39;;
  //执行并集操作 并结果放到一个集合中
  $redis->sunionstore(&#39;output&#39;, &#39;set&#39;, &#39;set2&#39;);
  print_r($redis->smembers(&#39;output&#39;));echo &#39;<br>&#39;;
  //返回集合的差集
  print_r($redis->sdiff(&#39;set&#39;, &#39;set2&#39;));echo &#39;<br>&#39;;
  //执行差集操作 并结果放到一个集合中
  $redis->sdiffstore(&#39;output&#39;, &#39;set&#39;, &#39;set2&#39;);
  print_r($redis->smembers(&#39;output&#39;));echo &#39;<br>&#39;;
  // 结果
  // 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 (ordered set):

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

For more related php knowledge, please visit php tutorial!

The above is the detailed content of Common methods for operating Redis database with PHP (summary). For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:cnblogs.com. If there is any infringement, please contact admin@php.cn delete