redis单例模式写法
<?php /**只看红色重点
* ===========================================================
* ZW_Memory_Cache
* Description
* ZW_Memory_Cache
* @Author wzhu.email@gmail.com
* @Version 1.0
* @Copyright Zhuweiwei
* Copyright © 2008-2012
* China. All Rights Reserved.
* ===========================================================
*/ namespace ZW\Memory;
use \Redis as Redis;
use ZW\Conf\Memory as Conf; class Handle { private $handle = NULL;
private static $_instance = NULL; //定义私有的属性变量 public static function getInstance() { //定义公用的静态方法
if (NULL == self::$_instance) {
self::$_instance = new self;
}
return self::$_instance;
} public function __construct() {
$redis = new Redis(); //实例化redis
$redis->connect(Conf::HOST, Conf::PORT);
$redis->auth(Conf::AUTH);
$this->handle = &$redis; //将变量与redis通过引用符关联在一起,以后直接使用handle即可,相当于将redis付给一个变量,这是另一种写法
$this->handle->select(ENVIRONMENT);
} public function __destruct() {
$this->handle->close();
} public function get($k) {
return $this->handle->get($k . ''); //获取redis键名
} public function set($k, $v) {
return $this->handle->set($k . '', $v . '');
} public function setex($k, $v, $ttl = SEC_HOUR) {
return $this->handle->setex($k, intval($ttl), $v);
} public function del($k) {
return $this->handle->delete($k);
} public function increment($k, $step = 1, $def = 0) {
if (!$this->handle->exists($k)) {
$this->handle->set($k, intval($def));
}
return $this->handle->incrBy($k, max(1, $step));
} public function decrement($k, $step = 1, $def = 0) {
if (!$this->handle->exists($k)) {
$this->handle->set($k, intval($def));
}
return $this->handle->decrBy($k, max(1, $step));
} public function arrGet(array $arrKey) {
return $this->handle->mGet($arrKey);
} public function arrSet(array $arrKv) {
return $this->handle->mset($arrKv);
} public function getListAt($k, $index) {
return $this->handle->lGet($k, $index);
} public function setListAt($k, $index, $v) {
return $this->handle->lSet($k, $index, $v);
} public function pushListHead($k, $v) {
return $this->handle->lPush($k, $v);
} public function pushListTail($k, $v) {
return $this->handle->rPush($k, $v);
} public function popListHead($k) {
return $this->handle->lPop($k);
} public function popListTail($k) {
return $this->handle->rPop($k);
} public function getListSize($k) {
return $this->handle->lSize($k);
} public function ttl($k) {
return $this->handle->ttl($k);
} public function setnx($k, $v){
return $this->handle->setnx($k, $v);
} public function exists($k) {
return $this->handle->exists($k);
} public function expire($k, $ttl) {
$this->handle->expire($k, intval($ttl));
} public function persist($k) {
$this->handle->persist($k);
} public function expireAt($k, $timeStamp) {
$this->handle->expireAt($k, $timeStamp);
} public function append($k, $append) {
$this->handle->append($k, $append);
} public function keys($regexKey) {
return $this->handle->keys($regexKey);
} }
redis单例模式写法的更多相关文章
- TP5.0 Redis(单例模式)(原)
看到好多面试都问设计模式,我就简单的了解了一下,顺便把之前封装好的Reis做了一次修改. 单例模式(Singleton Pattern 单件模式或单元素模式) 单例模式确保某个类只有一个实例,而且自行 ...
- redis单例模式
看到好多面试都问设计模式,我就简单的了解了一下,顺便把之前封装好的Reis做了一次修改. 单例模式(Singleton Pattern 单件模式或单元素模式) 单例模式确保某个类只有一个实例,而且自行 ...
- tp5 redis 单例模式 转载
单例模式(Singleton Pattern 单件模式或单元素模式) 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 单例模式有以下3个特点: 1 . 它必须有一个构造函数, ...
- php redis 单例模式
单例模式思想其实很简单 首先 有一个实例的静态变量 构造方法和克隆方法设置为私有,防止外部直接new 提供一个获取实例的静态方法 代码如下: class Redis { private static ...
- PHP程序中的redis一些写法
<?php /** * 以下均要先链接好redis */ sdk\libs\RedisHelper::connect("s1")->keys('*'); //这个是获取 ...
- 基于AtomicReference的单例模式写法
AtomicReference类主要属性(来源于jdk1.7中的源码) public class AtomicReference<V> implements java.io.Seriali ...
- 23种设计模式--单例模式-Singleton
一.单例模式的介绍 单例模式简单说就是掌握系统的至高点,在程序中只实例化一次,这样就是单例模式,在系统比如说你是该系统的登录的第多少人,还有数据库的连接池等地方会使用,单例模式是最简单,最常用的模式之 ...
- Redis修改数据多线程并发—Redis并发锁
本文版权归博客园和作者本人吴双共同所有 .转载爬虫请注明地址,博客园蜗牛 http://www.cnblogs.com/tdws/p/5712835.html 蜗牛Redis系列文章目录http:// ...
- 你真的会写单例模式吗-------Java实现
转载: 你真的会写单例模式吗--Java实现 单例模式可能是代码最少的模式了,但是少不一定意味着简单,想要用好.用对单例模式,还真得费一番脑筋.本文对Java中常见的单例模式写法做了一个总结,如有错漏 ...
随机推荐
- hash 和pushState,replaceState
hash 要点: 1.不会向后台发请求:#是用来指导浏览器动作的,对服务器端完全无用. 2.用来跳转到页面的指定位置: 为网页位置指定标识符,有两个方法.一是使用锚点,比如<a name=& ...
- 计算机1&操作系统硬件
1.什么是编程语言? 语言是一种事物与另外一种事物沟通的表达方式 而编程则是人与计算机沟通的表达方式 2:什么是编程? 编程就是程序员用计算机能理解的的表达方式,把程序员想要表达的内容写到文件里, ...
- js 两数组去除重复数值
//两数组去除重复数值 mergeArray: function(arr1, arr2) { for (var i = 0; i < arr1.length; i++) { for (var j ...
- elementUI vue table 操作选项中弹出框确定dialog
1.html <el-table-column label="操作" width="150" fixed="right" align= ...
- loj#6030. 「雅礼集训 2017 Day1」矩阵(贪心 构造)
题意 链接 Sol 自己都不知道自己怎么做出来的系列 不难观察出几个性质: 最优策略一定是先把某一行弄黑,然后再用这一行去覆盖不是全黑的列 无解当且仅当无黑色.否则第一个黑色所在的行\(i\)可以先把 ...
- 如何用ABP框架快速完成项目(14) - 结尾? 当然不是, 这只是开始!
此文当前版本号: 3 最近更新时间: 2018-12-9 04:52 本课程是方向性课程, 目的是避免南辕北辙. 方向盘一旦打正确, 还得需要以下文章去写好具体程序: 前面每篇文章里面的链接, 比 ...
- (后端)JackSon将java对象转换为JSON字符串(转)
转载小金金金丶园友: JackSon可以将java对象转换为JSON字符串,步骤如下: 1.导入JackSon 的jar包 2.创建ObjectMapper对象 3.使用ObjectMapper对象的 ...
- Scrapy 为每一个Spider设置自己的Pipeline
settings中的ITEM_PIPELINES 通常我们需要把数据存在数据库中,一般通过scrapy的pipelines管道机制来实现.做法是,先在pipelines.py模块中编写Pipeline ...
- UnrealEd3视图导航及常用快捷键
本博客使用的版本:2010-08 [更多其他的UE3版本][tps所用版本: 2011-02] [最新的UE3版本 -- 2015-02] [unreal engine wiki 中文w ...
- java----JSTL学习笔记(转)
Java容器类包含List.ArrayList.Vector及map.HashTable.HashMap.Hashset ArrayList和HashMap是异步的,Vector和HashTable是 ...