php redis 基础 获取通讯录 查询手机号是否在网站注册过

<?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]);
	}



}

 ?>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值