1、redis配置:
$CONFIG_REDIS = array(
    array('host' => '192.168.19.29', 'port' => '6379', 'dbIndex' => 0, 'password'=>'3695a77369be021075b480048142a3c2'),
    array('host' => '192.168.19.30', 'port' => '6379', 'dbIndex' => 0, 'password'=>'3695a77369be021075b480048142a3c2')
);
 
2、Redis操作封装类-->UtilRedis2
class UtilRedis2 {
 
 private static $_self = null;
 private $_servers = array();
 private $_conn = array();
 private $_conn_keys = array();
 
 const CONNECT_TIMEOUT = 5;
 
 public static function &getInstance() {
  // TODO Auto-generated method stub
  if (null == self::$_self)
  {
   self::$_self = new self();
  }
  return self::$_self;
 }
 
 private function __construct() {
  $this->_servers = $GLOBALS['CONFIG_REDIS'];
 }
 
 private function getConnection( $key ) {
  
  $serverCnt = count( $this->_servers );
  $hash = md5( $key );
  $serverIndex = $hash % $serverCnt;
  
  if ( !isset( $this->_conn[ $serverIndex ] ) ) {
   $this->_conn[ $serverIndex ] = new Redis();
   $this->_conn[ $serverIndex ]->pconnect(
          $this->_servers[$serverIndex]['host'],
          $this->_servers[$serverIndex]['port'],
          self::CONNECT_TIMEOUT
          );
   $this->_conn[ $serverIndex ]->auth($this->_servers[$serverIndex]['password']);
   $this->_conn[ $serverIndex ]->select( $this->_servers[$serverIndex]['dbIndex'] );
  }
  
  return $this->_conn[ $serverIndex ];
 }
 
 public function set( $key, $value, $expires = 0 ) {
  $conn = $this->getConnection( $key );
  
  if( $conn->set( $key, $value ) && $expires > 0 )
   return $conn->setTimeout($key, $expires);
  return true;
 }
......
 
3、使用redis操作封装类
$redis = UtilRedis2::getInstance();
$redis->set("development", "wangwu");
<?php
//连接本地的 Redis 服务
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
//$redis->auth('123456');
$redis->select(0);
//EXPIRE key seconds------给key设置生存时间,当key过期时,它会被自动删除
//PEXPIRE key milliseconds------以毫秒为单位设置key的生存时间
//EXPIREAT key timestamp------命令接受的时间参数是UNIX时间戳,key存活到一个unix时间戳时间
//PERSIST key------移除给定key的生存时间,转换成一个不带生存时间,永不过期的key
//SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC | DESC] [ALPHA] [STORE destination]------返回或保存给定列表、集合、有序集合key中经过排序的元素    
/****************String(字符串)相关操作***************/
//SET key value------将字符串值value关联到key,会覆盖
$a = $redis->set('email1','jiang@58haha.cn');
$redis->setTimeout('email1',30);
$seconds = $redis->ttl('email1');
$redis->select(1);
$h = $redis->get('email1');
print_r($h);
浏览器无内容输出,因为set、get操作不在一个分区。

PHP程序连接多个redis实例做缓存的更多相关文章

  1. PHP+Redis 实例 页面缓存

    前提分析! 上面的图,我分为了三个层级去做页面缓存,其实不一定要三个层面都实现的,如果你做了页面级的,项目初期是够了,作为接口级,基本可以解决很多吞吐量. 对于上面的三个层级,我用了同一个方法去做. ...

  2. Redis除了做缓存--Redis做消息队列/Redis做分布式锁/Redis做接口限流

    1.用Redis实现消息队列 用命令lpush入队,rpop出队 Long size = jedis.lpush("QueueName", message);//返回存放的数据条数 ...

  3. Redis入门(二)-Redis能够做什么

    引言 在上篇文章中,我们讲述了Redis的基本知识让读者对Redis有了基本的了解.那么这一节我们就来看一下Redis究竟能做什么. 上一节我们提到了Redis可用作数据库,高速缓存和消息队列代理.这 ...

  4. 简单封装Redis做缓存

    基于Redis封装一个简单的Python缓存模块 0. Docker Redis安装 参考: Get Docker CE for CentOS Docker 安装 Redis 安装Docker时错误s ...

  5. spring+redis的集成,redis做缓存

    1.前言 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.我们都知道,在日常的应用中,数据库瓶颈是最容易出现的 ...

  6. SpringBoot之Mybatis操作中使用Redis做缓存

    上一博客学习了SpringBoot集成Redis,今天这篇博客学习下Mybatis操作中使用Redis做缓存.这里其实主要学习几个注解:@CachePut.@Cacheable.@CacheEvict ...

  7. spring-boot集成mybatis,用redis做缓存

    网上有很多例子了,执行源码起码有3个,都是各种各样的小问题. 现在做了个小demo,实现spring-boot 用redis做缓存的实例,简单记录下思路,分享下源码. 缓存的实现,分担了数据库的压力, ...

  8. 【最全 干货 实例】 缓存手册(Memcached、redis、RabbitMQ)

    http://www.cnblogs.com/suoning/p/5807247.html 本章内容: Memcached 简介.安装.使用 Python 操作 Memcached 天生支持集群 re ...

  9. 三分钟学会Redis在.NET Core中做缓存中间件

    大家好,今天给大家说明如何在.NET Core中使用Redis,我们在想要辩论程序的好与坏,都想需要一个可视化工具,我经常使用的是一位国内大牛开发的免费工具,其Github地址为: https://g ...

随机推荐

  1. Modules(最小树形图)

    题目链接: Modules 描述 蒜头有一块主板,为了提升其性能,可在主板上安置若干增强模块.蒜头有n个不同的增强模块,增强模块可以直接安置在主板上,也可以安置在已经直接或间接连接在主板上的其他增强模 ...

  2. 使用TR1的智能指针

    作为C++程序员,在没有智能指针,手动管理内存的蛮荒岁月里,可以说是暗无天日,痛苦异常.直到上帝说,还是要有光,于是智能指针进了标准.C++码农的日子总算好起来了. 虽然一直鄙视着没有显式指针的语言, ...

  3. nginx在使用proxy_pass的情况下开启error_page

    error_page用于指定特定错误发生时要显示的url,但是如果请求经proxy_pass处理后,如何使error_page对upstream产生的错误进行处理呢? 方法很简单. 保持之前的erro ...

  4. python库openpyxl操作excel

    废话不多说,看代码,不懂的留言. from openpyxl import * class ExcelUtil: ''' 读取excel文件内容''' def create_work_book(sel ...

  5. 折腾 Phalcon 的笔记

    不要用 IIS!Apache 万岁! 不要用 Web Platform Installer!自己动手丰衣足食! 注意版本号.TS 与 NonTS.x86 与 x64 的区别! 关于 Apache 的配 ...

  6. PHP 数组转json_encode,单个数组下标为了0时不对??

    在 php 数组转json时,假如 有一个数组下标是顺序的,他json_encode后会直接变成一个简版二维json, $arr = ['1'=>1,'2'=>2]; echo (json ...

  7. 【spring源码学习】spring的aop目标对象中进行自我调用,且需要实施相应的事务定义的解决方案

    转载:http://www.iteye.com/topic/1122740 1.预备知识 aop概念请参考[http://www.iteye.com/topic/1122401]和[http://ji ...

  8. gradle multiproject && docker build

    备注:   环境准备 : docker , gradle(使用wrapper,或者全局安装),测试环境使用mac 1. gradle 安装 brew install gradle   2. docke ...

  9. 微软Enterprise Library 4.1和Unity 1.2

    说明 微软模式与实践团队今天发布了Enterprise Library 4.1和Unity 1.2版本,这次发布的主要新特性如下: 1. 支持Visual Studio 2008 SP1 2. Uni ...

  10. PHP面向对象——三大基本特性与五大基本原则

    三大特性是:封装.继承.多态 所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏. 封装是面向对象的特征之一,是对象和类概念的主要特 ...