php+redis有命名空间的redis怎么封装?
时间: 2023-05-16 20:06:31 浏览: 76
可以使用以下代码进行封装:
```
<?php
namespace MyRedis;
use Redis;
class MyRedis
{
private $redis;
public function __construct($host, $port, $db, $password = null)
{
$this->redis = new Redis();
$this->redis->connect($host, $port);
if ($password) {
$this->redis->auth($password);
}
$this->redis->select($db);
}
public function __call($name, $arguments)
{
return call_user_func_array([$this->redis, $name], $arguments);
}
}
```
这样,就可以使用 MyRedis 类来操作 Redis,而不用担心命名空间的问题。
相关问题
php+redis有命名空间的redis怎么封装?怎么用?
对于php redis有命名空间的redis的封装,可以使用以下代码:
```
<?php
namespace Redis;
class RedisNamespace
{
private $redis;
private $namespace;
public function __construct($redis, $namespace)
{
$this->redis = $redis;
$this->namespace = $namespace;
}
public function __call($name, $arguments)
{
$arguments[0] = $this->namespace . ':' . $arguments[0];
return call_user_func_array([$this->redis, $name], $arguments);
}
}
```
使用方法如下:
```
$redis = new \Redis();
$redis->connect('127.0.0.1', 6379);
$namespacedRedis = new RedisNamespace($redis, 'my_namespace');
$namespacedRedis->set('key', 'value');
echo $namespacedRedis->get('key');
```
这样就可以在redis中使用命名空间了。
对于中文加密的问题,可以使用以下代码:
```
function encrypt($str, $key)
{
$block = mcrypt_get_block_size('des', 'ecb');
$pad = $block - (strlen($str) % $block);
$str .= str_repeat(chr($pad), $pad);
$encrypted = mcrypt_encrypt(MCRYPT_DES, $key, $str, MCRYPT_MODE_ECB);
return base64_encode($encrypted);
}
function decrypt($str, $key)
{
$str = base64_decode($str);
$str = mcrypt_decrypt(MCRYPT_DES, $key, $str, MCRYPT_MODE_ECB);
$pad = ord($str[strlen($str) - 1]);
return substr($str, 0, -$pad);
}
```
使用方法如下:
```
$key = 'my_key';
$str = '中文加密';
$encrypted = encrypt($str, $key);
echo $encrypted . "\n";
$decrypted = decrypt($encrypted, $key);
echo $decrypted . "\n";
```
这样就可以对中文进行加密和解密了。
php+redis判断redis是否有数据?
可以使用Redis的exists命令来判断Redis中是否存在指定的key,如果返回值为1,则表示存在数据,如果返回值为0,则表示不存在数据。以下是使用PHP Redis扩展判断Redis是否有数据的示例代码:
```php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$key = 'mykey';
if ($redis->exists($key)) {
echo 'Redis中存在数据';
} else {
echo 'Redis中不存在数据';
}
```
注意,这里的$key是需要自己定义的,可以根据实际情况来设置。