封装php redis缓存操作类

封装php redis缓存操作类,集成了连接redis并判断连接是否成功,redis数据库选择,检测redis键是否存在,获取,写入值,设置生存时间删除清空操作。

php redis类代码:

<?php
/**
* redisdrive.class.php
* php redis 操作类
**/
class redisdrive{
//键名
public $key;
//值
public $value;
//默认生存时间
public $expire = 86400; /*60*60*24*/
//连接是否成功
public $redis;
//连接redis服务器ip
public $ip = ‘127.0.0.1‘;
//端口
public $port = 6379;
//密码
private $password = null;
//数据库
public $dbindex = 0;

/**
* 自动连接到redis缓存
*/
public function __construct(){
//判断php是否支持redis扩展
if(extension_loaded(‘redis‘)){
//实例化redis
if($this->redis = new redis()){
//ping连接
if(!$this->ping()){
$this->redis = false;
}else{
//连接通后的数据库选择和密码验证操作
$this->redis -> select($this->dbindex);
$this->redis->auth($this->password);
}
}else{
$this->redis = false;
}
}else{
$this->redis = false;
}
}

/**
* ping redis 的连通性
*/
public function ping(){
if($this->redis->connect($this->ip,$this->port)){
return true;
}else{
return false;
}
}

/**
* 检测redis键是否存在
*/
public function exists(){
if($this->redis->exists($this->key)){
return true;
}else{
return false;
}
}

/**
* 获取redis键的值
*/
public function get(){
if($this->exists()){
return json_decode($this->redis->get($this->key),true);
}else{
return false;
}
}

/**
* 带生存时间写入key
*/
public function setex(){
return $this->redis->setex($this->key,$this->expire,json_encode($this->value));
}

/**
* 设置redis键值
*/
public function set(){
if($this->redis->set($this->key,json_encode($this->value))){
return $this->redis->expire($this->key,$this->expire);
}else{
return false;
}
}

/**
* 获取key生存时间
*/
public function ttl(){
return $this->redis->ttl($this->key);
}

/**
*删除key
*/
public function del(){
return $this->redis->del($this->key);
}

/**
* 清空所有数据
*/
public function flushall(){
return $this->redis->flushall();
}

/**
* 获取所有key
*/
public function keys(){
return $this->redis->keys(‘*‘);
}

}

实例化调用:

判断redis是否可用和当设置了redis session 时redis不可用转回session文件操作。当redis可用时获取指定的键值如果存在就从redis中获取数据,如果不能存在就重新从数据库获取数据再写入redis,redis不可用时直接从数据库获取操作。

//实例化
$redis = new redisdrive();
$redis = false;
//是否可用判断
if($redis->redis==false){
$redis = false;
//如果把session存入了redis则在redis不可用时把session切换回文件存储
ini_set(‘session.save_handler‘,‘files‘);
ini_set(‘session.save_path‘,‘/tmp‘);
}else{
$redis = true;
}

//redis判断和数据读取缓存操作设置
if($redis){
//设置redis键
$redis->key = ‘res‘;
//获取redis键的值
$res_mysql = $redis->get();
//如果没获取到redis键的值得数据则从数据库获取并写入缓存
if(!$res){
//设置生存时间
$redis->expire = 60*60*6;
//设置键
$redis->key = ‘res‘;

//数据库获取数据$res

//获取到数据$res,赋值
$redis->value = $res;
//写入到redis中
$redis->set();
}
}else{
//数据库获取数据
}

原文地址:https://www.cnblogs.com/yszr/p/8338287.html

时间: 2024-12-15 16:10:10

封装php redis缓存操作类的相关文章

c# 封装的文件夹操作类之复制文件夹

c#  封装的文件夹操作类之复制文件夹 一.复制文件夹原理: 1.递归遍历文件夹 2.复制文件 二.FolderHelper.cs 1 /// <summary> 2 /// 文件夹操作类 3 /// </summary> 4 public static class FolderHelper 5 { 6 /// <summary> 7 /// 复制文件夹 8 /// </summary> 9 /// <param name="sourceFo

C#封装的常用文件操作类实例

本文实例讲述了C#封装的常用文件操作类.分享给大家供大家参考.具体如下: 这个C#类封装了我们经常能用到的文件操作方法,包括读写文件.获取文件扩展名.复制文件.追加内容到文件.删除文件.移动文件.创建目录.递归删除文件及目录.列目录.列文件等,不可多得. using System; using System.Text; using System.Web; using System.IO; namespace DotNet.Utilities { public class FileOperate

C#使用iTextSharp封装的PDF文件操作类实例

本文实例讲述了C#使用iTextSharp封装的PDF文件操作类.分享给大家供大家参考.具体分析如下: 这个C#代码主要讲iTextSharp中用于操作PDF文件的方法进行了再次封装,可以更加方便的访问PDF文档,可以动态生成PDF文件.添加内容.设置段落.设置字体等. using System.IO; using iTextSharp.text; using iTextSharp.text.pdf; namespace DotNet.Utilities { /// <summary> ///

php redis数据库操作类

<?php namespace iphp\db; use iphp\App; /** * redis操作类 * 说明,任何为false的串,存在redis中都是空串. * 只有在key不存在时,才会返回false. * 这点可用于防止缓存穿透 * @author xuen * */ class Redis { private $redis; //当前数据库ID号 protected $dbId=0; //当前权限认证码 protected $auth; /** * 实例化的对象,单例模式. *

redis缓存工具类,提供序列化接口

1.序列化工具类 1 package com.qicheshetuan.backend.util; 2 3 import java.io.ByteArrayInputStream; 4 import java.io.ByteArrayOutputStream; 5 import java.io.ObjectInputStream; 6 import java.io.ObjectOutputStream; 7 8 public class SerializeUtil { 9 10 //序列化 11

SpringBoot集成Redis分布式锁以及Redis缓存

https://blog.csdn.net/qq_26525215/article/details/79182687 集成Redis 首先在pom.xml中加入需要的redis依赖和缓存依赖 <!-- 引入redis依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifa

spring boot 结合Redis 实现工具类

自己整理了 spring boot 结合 Redis 的工具类引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency>加入配置 # Redis数据库索引(默认为0)spring.redis.database=0# Redis服务器地址

SpringBoot使用Redis缓存

(1)pom.xml引入jar包,如下: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> (2)application.properties中配置Redis连接信息,如下: # Redis数据库索引(默认为0) spring.red

C#语法糖之 cache操作类 asp.net

因为考虑到我下面我将写session cookies 等 操作类 ,与cache具有共性. 所以都统一继承了IHttpStorageObject  abstract class 来保函数风格的统一 ,但是又为了调用方便,抽象中又使用了单例来简化调用. 使用方法很简单: //声名一个数据集合 var listString = new List<string>() { "a", "b", "c" }; //缓存key string key