`
student_lp
  • 浏览: 437156 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多

    redis本质上是一个key-value类型的内存数据库,它的功能比memcached强大的多。其中value可以是String、list、Set、Sorted Set、Hash等类型的数据结构。目前,已经有很多大型网站中大量使用。

    在本次博客中,仅仅介绍redis作为缓存服务器的使用。有关redis数据库(事物处理、主从同步)特性和Redis与VM的后台操作不做详细介绍,如果有感兴趣的,推荐查看《php核心技术与最佳实践》中的有关“redis章节”,书中介绍的非常详细。

一、Redis安装

1.去Redis官网下载Redis源码
    查看源代码打印帮助1 wget http://redis.googlecode.com/files/
2.解压并执行make安装
    ① # tar -zxvf redis-2.2.8.tar.gz  
    ②#cd redis-2.2.8.tar.gz  
    ③#make PREFIX=/usr/local/redis install --将redis安装到/usr/local/redis目录下。
3.测试是否成功安装
    ①启动redis服务:/usr/local/redis/bin/redis-server
    ②测试redis服务,启动redis-cli:
/usr/local/redis/bin/redis-cli;
redis>set blogname  kylingood  
     OK  
redis>get blogname  
     "kylingood" 
    安装成功
二、安装PHP的phpredis模块
1.下载phpredis扩展模块
    查看源代码打印帮助1 #wget  --no-check-certificate  https://github.com/owlient/phpredis 
2.增加phpredis模块
    ①#tar zxvf owlient-phpredis-2.1.1-1-g90ecd17.tar.gz 
    ②#cd  owlient-phpredis-2.1.1-1-g90ecd17  
    ③# /usr/local/php/bin/phpize   //这个phpize是安装php模块的  
    ④# ./configure –-with-php-config=/usr/local/php/bin/php-config  
    ⑤# make  
    ⑥# make install
3.接下来在php.ini中添加:
    extension=redis.so
    extension_dir=/usr/local/lib/php/extensions/no-debug-non-zts-20060613/(这个地址的来源是安装完成后,系统提示输出的Installing shared extensions:)
4.重启apache或者nginx还有php-fpm
5.查看phpinfo信息,看是否有如下Redis模块。
6.测试PHP操作Redis服务器.
 $redis = new Redis();  
 $redis->connect('127.0.0.1',6379);  
 $redis->set('test','Hello redis world!');  
 echo $redis->get('test');  
 exit;  
    如果你能成功看到页面输出:Hellow redis world!  那恭喜您,我们Redis初级配置已大功告成。
三、编写redis开机启动程序
#!/bin/sh
# chkconfig: 345 86 14
# description: Startup and shutdown script for Redis
REDIS_DIR=/web/redis/
#export $REDIS_DIR
REDIS_CONF=/etc/redis.conf
REDIS_PID=/var/run/redis.pid
case $1 in
'start'|'s' )
if test -x $REDIS_DIR/bin/redis-server
then
echo "Starting Redis..."
if $REDIS_DIR/bin/redis-server $REDIS_CONF
then
echo "OK"
else
echo "failed"
fi
else
echo "Couldn't find Redis Server ($REDIS_DIR/bin/redis-server)"
fi
;;
'stop' )
echo "Stopping Redis..."
kill `cat $REDIS_PID`
;;
'restart'|'reload'|'r' )
${0} stop
${0} start
;;
'list'|'l' )
ps aux | egrep '(PID|redis-server)'
;;
*)
echo "usage: `basename $0` {start|restart|reload|stop|list}"
esac
四、php操作redis类
/**
 * 缓存管理
 */
class RedisCache{
	//redis缓存成员变量
	private static $redis;
	/**
	 * 连接redis服务器
	 */
	private static function reLoadRedis()
	{
		if(RedisCache::$redis == null)
		{
			RedisCache::$redis = new Redis();
			RedisCache::$redis->connect(CACHE_HOST, CACHE_PORT,10);
		}
	}
	/**字符串操作*****************************************************/
	/**
	 *  添加字符串
	 * @param $cacheModel 缓存模块  CacheModel::var
	 * @param $key
	 * @param $value 
	 * @param $failtime 过期时间
	 */
	static function strSet($cacheModel,$key,$value,$failtime=0)
	{
		RedisCache::reLoadRedis();
		if($failtime > 0)
		{
			RedisCache::$redis->setex($cacheModel.$key,$failtime,$value);
		}else {
			RedisCache::$redis->set($cacheModel.$key,$value);
		}
	}
	/**
	 * 获取字符串
	 * @param $cacheModel 缓存模块  CacheModel::var
	 * @param $key
	 */
	static function strGet($cacheModel,$key)
	{
		RedisCache::reLoadRedis();
		return RedisCache::$redis->get($cacheModel.$key);
	}
	/**
	 * 先get后set 操作
	 * @param $cacheModel 缓存模块  CacheModel::var
	 * @param $key 要获取和重新set新值的key
	 * @param $newvalue 替换原值的新值
	 */
	static function strGetAndSet($cacheModel,$key,$newvalue)
	{
		RedisCache::reLoadRedis();
		return RedisCache::$redis->getSet($cacheModel.$key,$newvalue);
	}
	/**
	 * 给 key 追加内容
	 * @param $cacheModel 缓存模块  CacheModel::var
	 * @param $key
	 * @param $value
	 */
	static function strAppend($cacheModel,$key,$value)
	{
		RedisCache::reLoadRedis();
		RedisCache::$redis->append($cacheModel.$key, $value);
	}
/**单个数组操作*****************************************************/
	/**
	 *  添加数组 
	 * @param $cacheModel
	 * @param $key
	 * @param $value 数组
	 * @param $failtime 过期时间
	 */
	static function arraySet($cacheModel,$key,$value,$failtime=0)
	{
		RedisCache::strSet($cacheModel, $key, serialize($value),$failtime);
	}
	/**
	 *  获取数组 
	 * @param $cacheModel
	 * @param $key
	 * @param $value 数组
	 */
	static function arrayGet($cacheModel,$key)
	{
		return unserialize(RedisCache::strGet($cacheModel, $key));
	}
	
/**list操作*****************************************************/
	/**
	 * 获取key这个list的元素个数
	 * @param $cacheModel 缓存模块  CacheModel::var
	 * @param $key
	 */
	static function listSize($cacheModel,$key)
	{
		RedisCache::reLoadRedis();
		return RedisCache::$redis->lSize($cacheModel.$key);
	}
	/**
	 * 给list中头部添加元素
	 * @param $cacheModel
	 * @param $key
	 * @param $value
	 */
	static function listLeftAdd($cacheModel,$key,$value)
	{
		RedisCache::reLoadRedis();
		RedisCache::$redis->lPush($cacheModel.$key,serialize($value));
	}
	/**
	 * 给list中尾部添加元素
	 * @param $cacheModel
	 * @param $key
	 * @param $value
	 */
	static function listRightAdd($cacheModel,$key,$value)
	{
		RedisCache::reLoadRedis();
		RedisCache::$redis->rPush($cacheModel.$key,serialize($value));
	}
	/**
	 * 给list中指定index修改元素
	 * @param $cacheModel
	 * @param $key
	 * @param $value
	 * @param $index
	 */
	static function listUpdate($cacheModel,$key,$value,$index)
	{
		RedisCache::reLoadRedis();
		RedisCache::$redis->lSet($cacheModel.$key, $index, serialize($value));
	}
	/**
	 * 获取list中索引为index的元素
	 * @param  $cacheModel
	 * @param  $key
	 * @param  $index 默认为0
	 */
	static function listGet($cacheModel,$key,$index)
	{
		RedisCache::reLoadRedis();
		return unserialize(RedisCache::$redis->lGet($cacheModel.$key,$index));
	}
	/**
	 * 获取key这个list指定开始和结束的元素数组
	 * @param  $cacheModel
	 * @param  $key
	 * @param  $startIndex
	 * @param  $endStart -1为所有;不包括end索引的元素
	 */
	static function listRange($cacheModel,$key,$startIndex,$endIndex)
	{
		$end = $endIndex;
		$listNum = RedisCache::listSize($cacheModel, $key);
		if($endIndex == -1 || $endIndex>$listNum)
		{
			$end = $listNum;
		}
		$array = array();
		for($i=$startIndex;$i<$end;$i++)
		{
			$array[] = RedisCache::listGet($cacheModel, $key, $i);
		}
		return $array;
	}
	/**
	 * 删除list的第一个元素
	 * @param $cacheModel
	 * @param $key
	 */
	static function listLeftDelete($cacheModel,$key)
	{
		RedisCache::reLoadRedis();
		RedisCache::$redis->lPop($cacheModel.$key);
	}
	/**
	 * 删除list的最后一个元素
	 * @param $cacheModel
	 * @param $key
	 */
	static function listRightDelete($cacheModel,$key)
	{
		RedisCache::reLoadRedis();
		RedisCache::$redis->rPop($cacheModel.$key);
	}
	
	/**
	 * 通过key删除缓存
	 * @param $cacheModel 缓存模块  CacheModel::var
	 * @param $key 
	 */
	static function delete($cacheModel,$key)
	{
		RedisCache::reLoadRedis();
		RedisCache::$redis->delete($cacheModel.$key);
	}
	/**
	 * 通过key集合删除缓存
	 * @param $cacheModel 缓存模块  CacheModel::var
	 * @param $keyarray 多个key数组 array('key1','key2'..)
	 */
	static function deleteByArray($cacheModel,$keyarray)
	{
		RedisCache::reLoadRedis();
		RedisCache::deleteStr($cacheModel.$keyarray);
	}
	/**
	 * 删除所有
	 */
	static function deleteAll()
	{
		RedisCache::reLoadRedis();
		RedisCache::$redis->flushAll();
	}
	/**
	 * 关闭连接
	 */
	static function close()
	{
		if(RedisCache::$redis != null)
		{
			RedisCache::$redis->close();
		}
	}
} 
 
  • 大小: 13.8 KB
分享到:
评论

相关推荐

    redis基础认识与使用

    Redis,全称Remote Dictionary Server,是一款高性能的键值存储系统,常被用作数据库、缓存和消息中间件。它的设计目标是速度和数据持久化,支持多种数据结构,如字符串、哈希、列表、集合、有序集合等,使得Redis在...

    Redis快速入门ppt(1)

    "Redis快速入门ppt" Redis快速入门 ppt 介绍了 ...Redis 是一种功能丰富、性能高的 NoSQL 数据库,广泛应用于缓存、消息队列、数据存储等领域。本课程旨在教会学生快速入门 Redis,掌握 Redis 的基础知识和应用场景。

    linux redis安装及redis集群创建

    Redis是一种内存数据存储系统,常用于数据库、缓存和消息中间件,因其高效性能而备受青睐。 首先,让我们从下载Redis 3.2.5开始。你可以通过访问官方网站或者使用wget命令从官方镜像站点下载源码包。例如: ```...

    redis-6.0.8.zip

    Redis是一款高性能的键值对数据库,常用于缓存、消息队列等场景。...正确安装和使用Redis能有效提升应用的性能,满足多种业务需求。在实际开发中,还需要根据具体场景选择合适的配置和策略,以充分发挥Redis的优势。

    redis最简单例子

    Redis是一款高性能的键值对数据库,常用于数据缓存、消息队列以及实时统计等多种场景。作为初学者,了解并掌握Redis的基本操作是至关重要的。本文将通过一个简单的实例,帮助你快速入门Redis。 首先,我们需要确保...

    Redis应用场景--Redis作者谈Redis应用场景

    ### Redis应用场景解析 Redis作为一款开源的键值存储系统,凭借其高性能、低...通过本文的介绍,相信读者已经对Redis的主要应用场景有了较为全面的认识,未来在选择合适的工具和技术栈时,能够做出更加明智的选择。

    Redis深度历险:核心原理和应用实践【TALKDATA推荐】1

    书中提到,Redis不仅可以作为缓存系统,还可以用于消息队列、计数器、分布式锁等多种功能,这为读者提供了对Redis功能的广泛认识。 接下来,小册内容范围的介绍明确了本书将详细讲解Redis的基础数据结构,包括安装...

    redis实战的英文原版

    - **第1章: 认识Redis (Getting to know Redis)** - **主要内容**: - Redis简介: Redis是一款高性能的键值存储系统,支持多种数据结构如字符串、列表、集合等。 - Redis的特点: 高性能、低延迟、支持主从复制、...

    redis 入门篇 代码 redis入门

    例如,在Ubuntu上,可以使用`sudo apt-get install redis-server`命令进行安装。安装完成后,通过`systemctl start redis`启动服务,并用`systemctl status redis`检查状态。Windows用户可以选择下载预编译的二进制...

    redis入门手册(中文)

    1. **安装与配置**:了解如何在不同的操作系统上安装Redis,包括Windows、Linux和macOS。同时,学习如何配置Redis服务器,如修改配置文件`redis.conf`以设置端口、密码保护、最大连接数等。 2. **基本数据类型**:...

    Redis-x64-3.2.100.msi

    通过上述介绍,相信您已经对如何在Windows环境下安装、配置以及使用Redis有了较为全面的认识。Redis作为一种高效的数据存储解决方案,在实际应用中发挥着重要作用,尤其是在大数据量、高并发访问的场景下表现尤为...

    spring redis集成

    随着数据存储技术的发展,Redis作为一款高性能的键值存储系统,被广泛应用于缓存、消息队列等多个场景。Spring为开发者提供了一种便捷的方式来集成Redis,使得在Spring应用中操作Redis变得更加简单和高效。本文将...

    Redis in Action.

    书中还讨论了Redis的安装和配置,教导读者如何在不同的操作系统上安装Redis,以及如何调整配置文件以满足应用程序的具体需求。对于有兴趣深入了解Redis内部机制的读者,书中还提供了Redis作者Salvatore Sanfilippo的...

    Redis入门及集群环境搭建

    在本文中,我们将逐步介绍 Redis 的基本概念、安装、主从集群配置以及如何在 Java 应用中使用 Redis。 1. **Redis 概述** Redis 起初被设计为一个远程字典服务器,随着时间的推移,它发展成为了一个功能丰富的持久...

    ThinkPHP3.2框架操作Redis的方法分析

    官方提供了一套缓存驱动接口,其中Redis作为其中一个缓存驱动被使用。在ThinkPHP3.2的目录结构中,Redis缓存文件通常位于\ThinkPHP\Library\Think\Cache\Driver路径下。尽管ThinkPHP3.2已提供了与Redis的集成方式,...

    redis入门指栏

    1. 安装:Redis提供源码安装,可以在官方网站下载最新版本,然后编译安装。对于Linux系统,可以通过包管理器如apt或yum进行安装。 2. 配置:默认配置文件为`redis.conf`,可以修改端口、数据库数量、内存限制、持久...

    redis使用场景及数据结构.docx

    Redis 是一款非常流行的开源内存数据库系统,因其高性能和灵活性而被广泛应用于多种场景之中。以下是一些常见的使用场景: 1. **缓存**: - **本地缓存**:通过在本地存储频繁访问的数据,可以显著提高应用性能。 ...

    Windows版redis集群,即开即用

    Redis是一款高性能的键值对内存数据库,常用于缓存、消息中间件以及数据持久化等场景。在Windows环境下搭建Redis集群可以提供灵活的数据存储和快速访问能力,尤其适合开发和测试环境。本压缩包提供了预配置好的...

    第2章 Redis快速入门 试看.zip

    Redis(Remote Dictionary Server)是一个开源的、基于内存的数据结构存储系统,支持数据持久化,可作为数据库、缓存和消息代理使用。它提供了多种数据结构,如字符串、哈希、列表、集合和有序集合,使得在处理特定...

Global site tag (gtag.js) - Google Analytics