本文实例讲述了CI框架中redis缓存相关操作文件。分享给大家供大家参考,具体如下:
redis缓存类文件位置:
'ci\system\libraries\Cache\drivers\Cache_redis.php'
<?php
/**
* CodeIgniter
*
* An open source application development framework for PHP 5.2.4 or newer
*
* NOTICE OF LICENSE
*
* Licensed under the Open Software License version 3.0
*
* This source file is subject to the Open Software License (OSL 3.0) that is
* bundled with this package in the files license.txt / license.rst. It is
* also available through the world wide web at this URL:
* http://opensource.org/licenses/OSL-3.0
* If you did not receive a copy of the license and are unable to obtain it
* through the world wide web, please send an email to
* licensing@ellislab.com so we can send you a copy immediately.
*
* @package CodeIgniter
* @author EllisLab Dev Team
* @copyright Copyright (c) 2008 - 2014, EllisLab, Inc. (http://ellislab.com/)
* @license http://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0)
* @link http://codeigniter.com
* @since Version 3.0
* @filesource
*/
defined('BASEPATH') OR exit('No direct script access allowed');
/**
* CodeIgniter Redis Caching Class
*
* @package CodeIgniter
* @subpackage Libraries
* @category Core
* @author Anton Lindqvist <anton@qvister.se>
* @link
*/
class CI_Cache_redis extends CI_Driver
{
/**
* Default config
*
* @static
* @var array
*/
protected static $_default_config = array(
/*
'socket_type' => 'tcp',
'host' => '127.0.0.1',
'password' => NULL,
'port' => 6379,
'timeout' => 0
*/
);
/**
* Redis connection
*
* @var Redis
*/
protected $_redis;
/**
* Get cache
*
* @param string like *$key*
* @return array(hash)
*/
public function keys($key)
{
return $this->_redis->keys($key);
}
/**
* Get cache
*
* @param string Cache ID
* @return mixed
*/
public function get($key)
{
return $this->_redis->get($key);
}
/**
* mGet cache
*
* @param array Cache ID Array
* @return mixed
*/
public function mget($keys)
{
return $this->_redis->mget($keys);
}
/**
* Save cache
*
* @param string $id Cache ID
* @param mixed $data Data to save
* @param int $ttl Time to live in seconds
* @param bool $raw Whether to store the raw value (unused)
* @return bool TRUE on success, FALSE on failure
*/
public function save($id, $data, $ttl = 60, $raw = FALSE)
{
return ($ttl)
? $this->_redis->setex($id, $ttl, $data)
: $this->_redis->set($id, $data);
}
/**
* Delete from cache
*
* @param string Cache key
* @return bool
*/
public function delete($key)
{
return ($this->_redis->delete($key) === 1);
}
/**
* hIncrBy a raw value
*
* @param string $id Cache ID
* @param string $field Cache ID
* @param int $offset Step/value to add
* @return mixed New value on success or FALSE on failure
*/
public function hincrby($key, $field, $value = 1)
{
return $this->_redis->hIncrBy($key, $field, $value);
}
/**
* hIncrByFloat a raw value
*
* @param string $id Cache ID
* @param string $field Cache ID
* @param int $offset Step/value to add
* @return mixed New value on success or FALSE on failure
*/
public function hincrbyfloat($key, $field, $value = 1)
{
return $this->_redis->hIncrByFloat($key, $field, $value);
}
/**
* lpush a raw value
*
* @param string $key Cache ID
* @param string $value value
* @return mixed New value on success or FALSE on failure
*/
public function lpush($key, $value)
{
return $this->_redis->lPush($key, $value);
}
/**
* rpush a raw value
*
* @param string $key Cache ID
* @param string $value value
* @return mixed New value on success or FALSE on failure
*/
public function rpush($key, $value)
{
return $this->_redis->rPush($key, $value);
}
/**
* rpop a raw value
*
* @param string $key Cache ID
* @param string $value value
* @return mixed New value on success or FALSE on failure
*/
public function rpop($key)
{
return $this->_redis->rPop($key);
}
/**
* brpop a raw value
*
* @param string $key Cache ID
* @param string $ontime 阻塞等待时间
* @return mixed New value on success or FALSE on failure
*/
public function brpop($key,$ontime=0)
{
return $this->_redis->brPop($key,$ontime);
}
/**
* lLen a raw value
*
* @param string $key Cache ID
* @return mixed Value on success or FALSE on failure
*/
public function llen($key)
{
return $this->_redis->lLen($key);
}
/**
* Increment a raw value
*
* @param string $id Cache ID
* @param int $offset Step/value to add
* @return mixed New value on success or FALSE on failure
*/
public function increment($id, $offset = 1)
{
return $this->_redis->exists($id)
? $this->_redis->incr($id, $offset)
: FALSE;
}
/**
* incrby a raw value
*
* @param string $key Cache ID
* @param int $offset Step/value to add
* @return mixed New value on success or FALSE on failure
*/
public function incrby($key, $value = 1)
{
return $this->_redis->incrby($key, $value);
}
/**
* set a value expire time
*
* @param string $key Cache ID
* @param int $seconds expire seconds
* @return mixed New value on success or FALSE on failure
*/
public function expire($key, $seconds)
{
return $this->_redis->expire($key, $seconds);
}
/**
* Increment a raw value
*
* @param string $id Cache ID
* @param int $offset Step/value to add
* @return mixed New value on success or FALSE on failure
*/
public function hset($alias,$key, $value)
{
return $this->_redis->hset($alias,$key, $value);
}
/**
* Increment a raw value
*
* @param string $id Cache ID
* @param int $offset Step/value to add
* @return mixed New value on success or FALSE on failure
*/
public function hget($alias,$key)
{
return $this->_redis->hget($alias,$key);
}
/**
* Increment a raw value
*
* @param string $id Cache ID
* @return mixed New value on success or FALSE on failure
*/
public function hkeys($alias)
{
return $this->_redis->hkeys($alias);
}
/**
* Increment a raw value
*
* @param string $id Cache ID
* @param int $offset Step/value to add
* @return mixed New value on success or FALSE on failure
*/
public function hgetall($alias)
{
return $this->_redis->hgetall($alias);
}
/**
* Increment a raw value
*
* @param string $id Cache ID
* @param int $offset Step/value to add
* @return mixed New value on success or FALSE on failure
*/
public function hmget($alias,$key)
{
return $this->_redis->hmget($alias,$key);
}
/**
* del a key value
*
* @param string $id Cache ID
* @param int $offset Step/value to add
* @return mixed New value on success or FALSE on failure
*/
public function hdel($alias,$key)
{
return $this->_redis->hdel($alias,$key);
}
/**
* del a key value
*
* @param string $id Cache ID
* @return mixed New value on success or FALSE on failure
*/
public function hvals($alias)
{
return $this->_redis->hvals($alias);
}
/**
* Increment a raw value
*
* @param string $id Cache ID
* @param int $offset Step/value to add
* @return mixed New value on success or FALSE on failure
*/
public function hmset($alias,$array)
{
return $this->_redis->hmset($alias,$array);
}
/**
* Decrement a raw value
*
* @param string $id Cache ID
* @param int $offset Step/value to reduce by
* @return mixed New value on success or FALSE on failure
*/
public function decrement($id, $offset = 1)
{
return $this->_redis->exists($id)
? $this->_redis->decr($id, $offset)
: FALSE;
}
/**
* Clean cache
*
* @return bool
* @see Redis::flushDB()
*/
public function clean()
{
return $this->_redis->flushDB();
}
/**
* Get cache driver info
*
* @param string Not supported in Redis.
* Only included in order to offer a
* consistent cache API.
* @return array
* @see Redis::info()
*/
public function cache_info($type = NULL)
{
return $this->_redis->info();
}
/**
* Get cache metadata
*
* @param string Cache key
* @return array
*/
public function get_metadata($key)
{
$value = $this->get($key);
if ($value)
{
return array(
'expire' => time() + $this->_redis->ttl($key),
'data' => $value
);
}
return FALSE;
}
/**
* Check if Redis driver is supported
*
* @return bool
*/
public function is_supported()
{
if (extension_loaded('redis'))
{
return $this->_setup_redis();
}
else
{
log_message('debug', 'The Redis extension must be loaded to use Redis cache.');
return FALSE;
}
}
/**
* Setup Redis config and connection
*
* Loads Redis config file if present. Will halt execution
* if a Redis connection can't be established.
*
* @return bool
* @see Redis::connect()
*/
protected function _setup_redis()
{
$config = array();
$CI =& get_instance();
if ($CI->config->load('redis', TRUE, TRUE))
{
$config += $CI->config->item('redis');
}
$config = array_merge(self::$_default_config, $config);
$config = !empty($config['redis'])?$config['redis']:$config;
$this->_redis = new Redis();
try
{
if ($config['socket_type'] === 'unix')
{
$success = $this->_redis->connect($config['socket']);
}
else // tcp socket
{
$success = $this->_redis->connect($config['host'], $config['port'], $config['timeout']);
}
if ( ! $success)
{
log_message('debug', 'Cache: Redis connection refused. Check the config.');
return FALSE;
}
}
catch (RedisException $e)
{
log_message('debug', 'Cache: Redis connection refused ('.$e->getMessage().')');
return FALSE;
}
if (isset($config['password']))
{
$this->_redis->auth($config['password']);
}
return TRUE;
}
/**
* Class destructor
*
* Closes the connection to Redis if present.
*
* @return void
*/
public function __destruct()
{
if ($this->_redis)
{
$this->_redis->close();
}
}
}
/* End of file Cache_redis.php */
/* Location: ./system/libraries/Cache/drivers/Cache_redis.php */
更多关于CodeIgniter相关内容感兴趣的读者可查看本站专题:《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《php优秀开发框架总结》、《Yii框架入门及常用技巧总结》、《php缓存技术总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。
京东创始人刘强东和其妻子章泽天最近成为了互联网舆论关注的焦点。有关他们“移民美国”和在美国购买豪宅的传言在互联网上广泛传播。然而,京东官方通过微博发言人发布的消息澄清了这些传言,称这些言论纯属虚假信息和蓄意捏造。
日前,据博主“@超能数码君老周”爆料,国内三大运营商中国移动、中国电信和中国联通预计将集体采购百万台规模的华为Mate60系列手机。
据报道,荷兰半导体设备公司ASML正看到美国对华遏制政策的负面影响。阿斯麦(ASML)CEO彼得·温宁克在一档电视节目中分享了他对中国大陆问题以及该公司面临的出口管制和保护主义的看法。彼得曾在多个场合表达了他对出口管制以及中荷经济关系的担忧。
今年早些时候,抖音悄然上线了一款名为“青桃”的 App,Slogan 为“看见你的热爱”,根据应用介绍可知,“青桃”是一个属于年轻人的兴趣知识视频平台,由抖音官方出品的中长视频关联版本,整体风格有些类似B站。
日前,威马汽车首席数据官梅松林转发了一份“世界各国地区拥车率排行榜”,同时,他发文表示:中国汽车普及率低于非洲国家尼日利亚,每百户家庭仅17户有车。意大利世界排名第一,每十户中九户有车。
近日,一项新的研究发现,维生素 C 和 E 等抗氧化剂会激活一种机制,刺激癌症肿瘤中新血管的生长,帮助它们生长和扩散。
据媒体援引消息人士报道,苹果公司正在测试使用3D打印技术来生产其智能手表的钢质底盘。消息传出后,3D系统一度大涨超10%,不过截至周三收盘,该股涨幅回落至2%以内。
9月2日,坐拥千万粉丝的网红主播“秀才”账号被封禁,在社交媒体平台上引发热议。平台相关负责人表示,“秀才”账号违反平台相关规定,已封禁。据知情人士透露,秀才近期被举报存在违法行为,这可能是他被封禁的部分原因。据悉,“秀才”年龄39岁,是安徽省亳州市蒙城县人,抖音网红,粉丝数量超1200万。他曾被称为“中老年...
9月3日消息,亚马逊的一些股东,包括持有该公司股票的一家养老基金,日前对亚马逊、其创始人贝索斯和其董事会提起诉讼,指控他们在为 Project Kuiper 卫星星座项目购买发射服务时“违反了信义义务”。
据消息,为推广自家应用,苹果现推出了一个名为“Apps by Apple”的网站,展示了苹果为旗下产品(如 iPhone、iPad、Apple Watch、Mac 和 Apple TV)开发的各种应用程序。
特斯拉本周在美国大幅下调Model S和X售价,引发了该公司一些最坚定支持者的不满。知名特斯拉多头、未来基金(Future Fund)管理合伙人加里·布莱克发帖称,降价是一种“短期麻醉剂”,会让潜在客户等待进一步降价。
据外媒9月2日报道,荷兰半导体设备制造商阿斯麦称,尽管荷兰政府颁布的半导体设备出口管制新规9月正式生效,但该公司已获得在2023年底以前向中国运送受限制芯片制造机器的许可。
近日,根据美国证券交易委员会的文件显示,苹果卫星服务提供商 Globalstar 近期向马斯克旗下的 SpaceX 支付 6400 万美元(约 4.65 亿元人民币)。用于在 2023-2025 年期间,发射卫星,进一步扩展苹果 iPhone 系列的 SOS 卫星服务。
据报道,马斯克旗下社交平台𝕏(推特)日前调整了隐私政策,允许 𝕏 使用用户发布的信息来训练其人工智能(AI)模型。新的隐私政策将于 9 月 29 日生效。新政策规定,𝕏可能会使用所收集到的平台信息和公开可用的信息,来帮助训练 𝕏 的机器学习或人工智能模型。
9月2日,荣耀CEO赵明在采访中谈及华为手机回归时表示,替老同事们高兴,觉得手机行业,由于华为的回归,让竞争充满了更多的可能性和更多的魅力,对行业来说也是件好事。
《自然》30日发表的一篇论文报道了一个名为Swift的人工智能(AI)系统,该系统驾驶无人机的能力可在真实世界中一对一冠军赛里战胜人类对手。
近日,非营利组织纽约真菌学会(NYMS)发出警告,表示亚马逊为代表的电商平台上,充斥着各种AI生成的蘑菇觅食科普书籍,其中存在诸多错误。
社交媒体平台𝕏(原推特)新隐私政策提到:“在您同意的情况下,我们可能出于安全、安保和身份识别目的收集和使用您的生物识别信息。”
2023年德国柏林消费电子展上,各大企业都带来了最新的理念和产品,而高端化、本土化的中国产品正在不断吸引欧洲等国际市场的目光。
罗永浩日前在直播中吐槽苹果即将推出的 iPhone 新品,具体内容为:“以我对我‘子公司’的了解,我认为 iPhone 15 跟 iPhone 14 不会有什么区别的,除了序(列)号变了,这个‘不要脸’的东西,这个‘臭厨子’。