<?php
namespace common;
/**
* Class Storage
* @package common\Storage
* @author lijie 2019年12月28日12:00:53
*/
class Storage
{
/**
* 用户容器
*
* @var string
*/
const CONTAINER_ID = 'CONTAINER_ID';
/**
* 通讯录
*
* @var string
*/
const ADDRESS_BOOK = 'ADDRESS_BOOK';
/**
* 用户
*
* @var string
*/
const USER = 'USER';
/**
* 标识符 identifier
*
* @var string
*/
const IDENT = ':';
/**
* 前缀
*
* @var string
*/
const TABLE_PREFIX = 'TABLE_PREFIX';
/**
* config
*
* @var string
*/
private static $_config = [
'hostname'=>'127.0.0.1',
'port'=>'6379',
'database'=>'1',
];
/**
* redis
*
* @var string
*/
private $_redis;
private static $_instance;
/**
* redis类型.
*
* @var string
*/
private function _getSelectType() : array
{
return [
self::CONTAINER_ID=>'CONTAINER_ID',
self::ADDRESS_BOOK=>'ADDRESS_BOOK',
self::USER=>'USER',
];
}
/**
*
* @var string
*/
private function __construct(array $_config =[],$type='')
{
try {
$_config == [] ? $this->_config : $this->_config = $_config;
$this->_redis = new \Redis();
$this->_redis->connect(self::$_config['hostname'],self::$_config['port']);
$this->_redis->select(self::$_config['database']);
} catch (Exception $e) {
throw new Exception("redis config error");
}
}
private function __clone(){}
public static function initialization($config=[])
{
if(!(self::$_instance instanceof self)){
self::$_instance = new self($config);
}
return self::$_instance;
}
/**
* 返回redis
*
* @var obj
*/
public function Redis()
{
return $this->_redis;
}
/**
* 存放 用户通讯录
*
* @var bool
*/
public function setUserAddressBook(int $id ,array $mobile)
{
try {
return $this->_redis->SADD(self::USER.self::IDENT.self::ADDRESS_BOOK.self::IDENT.$id, ... $mobile);
} catch (Exception $e) {
return false;
}
}
/**
* 获取 用户通讯录
*
* @var array
*/
public function getUserAddressBook(int $id,$range = [0,50]) : array
{
return $this->_redis->SMEMBERS(self::USER.self::IDENT.self::ADDRESS_BOOK.self::IDENT.$id);
$array = array();
try {
foreach ($this->_redis->SMEMBERS(self::USER.self::IDENT.self::ADDRESS_BOOK.$id) as $key => $value) {
if ($key>=$range[0]&&$key<=$range[1]) {
$array[] = $value;
}
}
} catch (Exception $e) {
return false;
}
return $array; unset($array);
}
/**
* 系统存在用户
*
* @var array
*/
public function setSystemUser(int $mobile){
try {
return $this->_redis->SADD(self::CONTAINER_ID.self::IDENT.self::USER, $mobile);
} catch (Exception $e) {
return false;
}
}
/**
* (查询通讯录是否存在已注册好友)对比2库是否存在交集->存在返回
*
* @var array
*/
public function checkedLoginDatabaseIntersection( int $id) : array
{
return $this->_redis->sinter([self::CONTAINER_ID.self::IDENT.self::USER,self::USER.self::IDENT.self::ADDRESS_BOOK.self::IDENT.$id]);
}
}
?>