【redis 封装】

<?php
/**
 * Created by PhpStorm.
 * User: andy
 * Date: 18/3/26
 */
namespace app\common\lib\redis;
class Predis {
    public $redis = "";
    /**
     * 定义单例模式的变量
     * @var null
     */
    private static $_instance = null;

    public static function getInstance() {
        if(empty(self::$_instance)) {
            self::$_instance = new self();
        }
        return self::$_instance;
    }

    private function __construct() {
        $this->redis = new \Redis();
        $result = $this->redis->connect(config(‘redis.host‘), config(‘redis.port‘), config(‘redis.timeOut‘));
        if($result === false) {
            throw new \Exception(‘redis connect error‘);
        }
    }

    /**
     * set
     * @param $key
     * @param $value
     * @param int $time
     * @return bool|string
     */
    public function set($key, $value, $time = 0 ) {
        if(!$key) {
            return ‘‘;
        }
        if(is_array($value)) {
            $value = json_encode($value);
        }
        if(!$time) {
            return $this->redis->set($key, $value);
        }

        return $this->redis->setex($key, $time, $value);
    }

    /**
     * get
     * @param $key
     * @return bool|string
     */
    public function get($key) {
        if(!$key) {
            return ‘‘;
        }

        return $this->redis->get($key);
    }

    /**
     * @param $key
     * @return array
     */
    public function sMembers($key) {
        return $this->redis->sMembers($key);
    }

    /**
     * @param $name
     * @param $arguments
     * @return array
     */
    public function __call($name, $arguments) {
        //echo $name.PHP_EOL;
        //print_r($arguments);
        if(count($arguments) != 2) {
            return ‘‘;
        }
        $this->redis->$name($arguments[0], $arguments[1]);
    }
}

总结:采用单例模式:减少资源不必要开销

原文地址:https://www.cnblogs.com/fyandy/p/10061329.html

时间: 2024-11-12 15:39:27

【redis 封装】的相关文章

[C#] 使用 StackExchange.Redis 封装属于自己的 RedisHelper

使用 StackExchange.Redis 封装属于自己的 RedisHelper 目录 核心类 ConnectionMultiplexer 字符串(String) 哈希(Hash) 列表(List) 有序集合(sorted set) Key 操作 发布订阅 其他 简介 目前 .NET 使用访问 Redis 的的类库主流应该是 StackExchange.Redis,自己参考网上的文章(也许是吃饱了撑着),也尝试做出简单的封装. #region using System; using Syst

java- 简单redis 封装

jedis 简单使用并不复杂,但是考虑到效率问题,还是需要用到 jedispool,简单封装一下,方便调用,mark 一下. 1.由于没有封装自己的序列化接口,所以这块需要我们自己实现 1 package com.lixiaodao.common.redis; 2 3 public interface Serializer<T> { 4 5 String serialize(T value); 6 7 T deserialize(String value,Class<T> claz

使用 StackExchange.Redis 封装属于自己的 RedisHelper

目录 核心类 ConnectionMultiplexer 字符串(String) 哈希(Hash) 列表(List) 有序集合(sorted set) Key 操作 发布订阅 其他 简介 目前 .NET 使用访问 Redis 的的类库主流应该是 StackExchange.redis,自己参考网上的文章(也许是吃饱了撑着),也尝试做出简单的封装. /// <summary> /// Redis 助手 /// </summary> public class RedisHelper {

c#使用 NServiceKit.Redis 封装 RedisHelper

在说StackExchange.Redis 的时候说了,因为我们的项目一直.net4.0不升级,没有办法,我说的不算,哈哈,又查了StackExchange.Redis在.net4.0使用麻烦,所以选了NServiceKit.Redis.结构也不说了,直接上代码了. ICache.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threadi

功能比较全的StackExchange.Redis封装帮助类(.Net/C#)

Redis官网https://redis.io/ 以下内容未全部验证,如有问题请指出 //static NewtonsoftSerializer serializer = new NewtonsoftSerializer(); //static StackExchangeRedisCacheClient cacheClient = new StackExchangeRedisCacheClient(serializer); //private static IDatabase db = cach

PHP 操作redis 封装的类

1 <?php 2 /** 3 * Redis 操作,支持 Master/Slave 的负载集群 4 * 6 */ 7 class RedisCluster{ 8 9 // 是否使用 M/S 的读写集群方案 10 private $_isUseCluster = false; 11 12 // Slave 句柄标记 13 private $_sn = 0; 14 15 // 服务器连接句柄 16 private $_linkHandle = array( 17 'master'=>null,/

redis封装 get查询/删除key/key查询

#coding:utf-8 import redisimport msgpack #自己填写地址 class Redis_Mod(): def __init__(self): self.conn = Redis_Mod.__getCon() @staticmethod def __getCon(): try: conn = redis.Redis(host= Redis_DB.Host_R(), port= Redis_DB.Port_R(), password= Redis_DB.Pwd_R(

Redis封装之RedisHashService

RedisHashService: /// <summary> /// Hash:类似dictionary,通过索引快速定位到指定元素的,耗时均等,跟string的区别在于不用反序列化,直接修改某个字段 /// Hash的话,一个hashid-{key:value;key:value;key:value;} /// 可以一次性查找实体,也可以单个,还可以单个修改 /// </summary> public class RedisHashService : RedisBase { #

redis 源码分析(一) 内存管理

一,redis内存管理介绍 redis是一个基于内存的key-value的数据库,其内存管理是非常重要的,为了屏蔽不同平台之间的差异,以及统计内存占用量等,redis对内存分配函数进行了一层封装,程序中统一使用zmalloc,zfree一系列函数,其对应的源码在src/zmalloc.h和src/zmalloc.c两个文件中,源码点这里. 二,redis内存管理源码分析 redis封装是为了屏蔽底层平台的差异,同时方便自己实现相关的函数,我们可以通过src/zmalloc.h 文件中的相关宏定义