php操作redis的一些基本操作
背景:个人学习redis,php操作redis基本操作,记录一下,后续也可以完善完善作为一个工具类使用
代码如下:
<?php
/**
* Created by PhpStorm.
* User: wkk
* Time: 2021/12/5 - 00:04
* Desc: <php操作redis相关操作(未完待补充)>
*/
class WkkRedis
{
private static $ip = '127.0.0.1'; // redis服务IP地址
private static $auth = '123456'; // 如果开启了password,需要auth操作
private $redis;
public function __construct()
{
$this->redis = $this->initRedis(self::$ip, self::$auth);
}
/**
* @brief 实例化redis类
*
* @param $ip
* @param $auth
* @return Redis
*/
private function initRedis($ip, $auth): Redis
{
$redis = new Redis();
$redis->connect($ip);
// 如果设置了密码,则需要执行auth方法
if ($auth) {
$redis->auth($auth);
}
return $redis;
}
/**
* @brief 添加string类型的值
*
* @param string $key
* @param string $value
* @param int $expire
* @return bool
*/
public function setStr(string $key, string $value, int $expire = 0): bool
{
// 设置过期时间
if ($expire > 0) {
return $this->redis->set($key, $value, $expire);
}
// 永不过期
return $this->redis->set($key, $value);
}
/**
* @brief 获取string类型的值
*
* @param $key
* @return bool|mixed|string
*/
public function getStr($key)
{
return $this->redis->get($key);
}
/**
* @brief 添加string类型的键值对,如果key存在不处理,key不存在则添加
*
* @param string $key
* @param string $value
* @return bool
*/
public function setnxStr(string $key, string $value): bool
{
return $this->redis->setnx($key, $value);
}
/**
* @brief 删除string类型的键,删除键值对信息
*
* @param string $key
* @return int
*/
public function delKey(string $key): int
{
return $this->redis->del($key);
}
/**
* @brief 删除string类型的键,同时删除多个
*
* @param array $keys
* @return int
*/
public function delKeys(array $keys): int
{
return $this->redis->del($keys);
}
/**
* @brief 设置超时时间,单位:秒
*
* @param string $key
* @param int $expire
* @return bool
*/
public function setExpire(string $key, int $expire): bool
{
return $this->redis->expire($key, $expire);
}
/**
* @brief 添加hash键值对,添加单个键值对
*
* @param string $key
* @param string $hashKey
* @param string $value
* @return bool|int
*/
public function hsetHash(string $key, string $hashKey, string $value)
{
return $this->redis->hSet($key, $hashKey, $value);
}
/**
* @brief 添加hash键值对,可以同时添加多个键值对
*
* @param string $key
* @param array $value
* @return bool
*/
public function hmsetHash(string $key, array $value): bool
{
return $this->redis->hMSet($key, $value);
}
/**
* @brief 获取hash键值信息,获取单个键值
*
* @param string $key
* @param string $hashKey
* @return string
*/
public function hgetKey(string $key, string $hashKey): string
{
return $this->redis->hGet($key, $hashKey);
}
/**
* @brief 获取hash键值信息,获取所有键值对信息,包括键名和键值
*
* @param string $key
* @return array
*/
public function hgetAll(string $key): array
{
return $this->redis->hGetAll($key);
}
/**
* @brief 给链表添加值,支持同时添加多个value,逗号分隔value即可
*
* @param string $key
* @param $value
* @return bool|int
*/
public function lpush(string $key, $value)
{
return $this->redis->lPush($key, $value);
}
/**
* @brief 链表右侧取出值
*
* @param $key
* @return bool|mixed
*/
public function rpop($key)
{
return $this->redis->rPop($key);
}
/**
* @brief 链表从左侧取出值,从列表中删除一个值,返回该值
*
* @param $key
* @return bool|mixed
*/
public function lpop($key)
{
return $this->redis->lPop($key);
}
/**
* @brief 获取链表的值,从start到end位置
*
* @param $key
* @param int $start
* @param int $end
* @return array
*/
public function lrange($key, int $start = 0, int $end = -1): array
{
return $this->redis->lRange($key, $start, $end);
}
/**
* @brief 获取链表的长度
*
* @param string $key
* @return bool|int
*/
public function gelListLen(string $key)
{
return $this->redis->lLen($key);
}
/**
* @brief 添加数据到集合中
*
* @param string $key
* @param $value
* @return bool|int
*/
public function saddValue(string $key, $value)
{
return $this->redis->sAdd($key, $value);
}
/**
* @brief 判断value是否在集合中
*
* @param $key
* @param $value
* @return bool
*/
public function sismenber($key, $value): bool
{
return $this->redis->sIsMember($key, $value);
}
}
# demo1:连接redis
//$redis = new WkkRedis();
# $res = $redis->setStr('php_str_test', 'php操作redis,写入键值对信息,超时时间为-1,永不过期');
//$val = $redis->getStr('php_str_test');
//var_dump($val);
//$res = $redis->delKey('php_str_test2');
//exit($res);
//$redis->setnxStr('php_str_test1', '通过setnx写入数据1');
//$redis->setnxStr('php_str_test2', '通过setnx写入数据2');
//$res = $redis->delKeys(['php_str_test1', 'php_str_test2']);
//exit($res);
//$res = $redis->hsetHash('php_hash_demo', 'name', '王凯凯');
//var_dump($res);
//$res = $redis->hmsetHash('php_hash_demo', ['age' => 28, 'gender' => '男', 'birth' => '1993306']);
//var_dump($res);
//$val = $redis->hgetKey('php_hash_demo', 'name');
//var_dump($val);
//$res = $redis->lpush('list_key1', '1');
////$val = $redis->lRange('list_key1', 0, -1);
//var_dump($res);
//var_dump($redis->rpop('list_key1'));
//var_dump($redis->hgetAll('php_hash_demo'));
//var_dump($redis->hgetKey('php_hash_demo', 'name'));