<?php
namespace app\common\model;

class Cache
{

public $redis = null;

public function __construct() {
if (is_null($this->redis)) {
$this->redis = new \Redis();
$this->redis->connect('127.0.0.1', '6379');
}
}
//获取对应缓存
//subkey = 's'
public function get_obj_cache($key = '', $subkey = '')
{

$data = false;
$key = (string)$key;
$subkey = (string)$subkey;

// 检查变量
if (!is_not_empty_string($key))
{
return $data;
}
// 读取数据
if (is_not_empty_string($subkey) && $subkey == 's')
{
$data = $this->redis->smembers($key);
if(is_not_empty_array($data)) return $data;

return false;
}
else
{
$data = $this->redis->get($key);
}

return $data;
}

//删除对应缓存
public function cache_del ( $key = '') {
$state = false;
// 检查变量
if ( !is_not_empty_string( $key ))
{
return $state;
}
// 删除数据
$this->redis->del($key);
$state = true;
return $state;
}

//更新对应缓存 key_val
public function cache_item($key = '', $value = '', $cache_time = 0)
{
$state = false;
// 检查参数
if ( !is_not_empty_string( $key ))
{
return $state;
}
// 存储数据
$this->redis->set($key, $value);
// 设置过期时间
if ($cache_time > 0) {
$this->redis->expire($key, (int)$cache_time);
}

$state = true;

return $state;
}
//更新对应集合key
public function cache_Sitem ($key = '', $value = '') {
$state = false;
// 检查参数
if (!is_not_empty_string($key) || empty($value))
{
return $state;
}
// 存储数据
$this->redis->sadd($key, $value);
$state = true;
return $state;
}
//移除集合元素
public function ceche_Sremove ($key = '', $value = '') {
$state = false;
$key = (string)$key;
// 检查参数
if (!is_not_empty_string($key))
{
return $state;
}
// 移除元素
$this->redis->srem($key, $value);
$state = true;
return $state;
}

}

共用的model类使用

<?php
namespace app\index\model;
use think\Model;
use think\Request;
use think\Db;
use think\Cookie;
use app\common\model\Cache;
class Suv extends Model
{
private $Dk_User_Info_Cache_Key = 'Dk_User_Info_Cache_Uid_%d'; //获取查询的id
private $Cache_time = 604800; //默认缓存时间

public function suibian($uid = 0){
$data = [];
$Cache_obj = new Cache();
$cachekey = sprintf($this->Dk_User_Info_Cache_Key, $uid);//Dk_User_Info_Cache_Uid_1

$data = unserialize($Cache_obj -> get_obj_cache($cachekey));//读取redis缓存,反序列化

if(false === $data){
//echo 'kong';
$UserInfo = Db::table('mb_user')->where('UserId','1')->find();
if(!empty($UserInfo)){
$Cache_obj->cache_item($cachekey, serialize( $UserInfo), $this->Cache_time);//序列化后存到redis中
}
$data = $UserInfo;
}
return $data;
}

}

控制器使用公共model类

$AAA = new Suv();
$res = $AAA->suibian(1);

redis类与用法的更多相关文章

  1. C#中timer类的用法

    C#中timer类的用法 关于C#中timer类  在C#里关于定时器类就有3个   1.定义在System.Windows.Forms里   2.定义在System.Threading.Timer类 ...

  2. C#正则表达式Regex类的用法

    C#正则表达式Regex类的用法 更多2014/2/18 来源:C#学习浏览量:36891 学习标签: 正则表达式 Regex 本文导读:正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串, ...

  3. 标准C++中的string类的用法总结

    标准C++中的string类的用法总结 相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有 ...

  4. android中Handle类的用法

    android中Handle类的用法 当我们在处理下载或是其他需要长时间执行的任务时,如果直接把处理函数放Activity的OnCreate或是OnStart中,会导致执行过程中整个Activity无 ...

  5. Handle类的用法

    android中Handle类的用法 当我们在处理下载或是其他需要长时间执行的任务时,如果直接把处理函数放Activity的OnCreate或是OnStart中,会导致执行过程中整个Activity无 ...

  6. android application类的用法

    android application类的用法 Application是android系统Framework提供的一个组件,它是单例模式(singleton),即每个应用只有一个实例,用来存储系统的一 ...

  7. php class类的用法详细总结

    以下是对php中class类的用法进行了详细的总结介绍,需要的朋友可以过来参考下 一:结构和调用(实例化): class className{} ,调用:$obj = new className(); ...

  8. day319 1、正则表达式的定义及使用 2、Date类的用法 3、Calendar类的用法

    1.正则表达式的定义及使用2.Date类的用法3.Calendar类的用法 一.正则表达式 ###01正则表达式的概念和作用* A: 正则表达式的概念和作用* a: 正则表达式的概述* 正则表达式也是 ...

  9. [转]QDir类及其用法总结

    直接给出原文链接:QDir类及其用法总结

随机推荐

  1. 【WebSocket No.1】实现服务端webSocket连接通讯

    前言 现阶段socket通信使用TCP.UDP协议,其中TCP协议相对来说比较安全稳定!本文也是来讲解TCP为主(恕在下学艺不精). 下面是个人理解的tcp/ip进行通讯之间的三次握手! 1.客户端先 ...

  2. request请求 HTTPBody 格式

    //Json格式       [mtbRequset setValue:@"application/json" forHTTPHeaderField:@"Content- ...

  3. Apache:详解QSA,PT,L,E参数的作用

    [QSA] 当被替换的URI包含有query string的时候,apache的默认行为是,丢弃原有的query string 并直接使用新产生的query string,如果加上了[QSA]选项,那 ...

  4. Archlinux/Manjaro使用笔记-安装配置搜狗输入法步骤

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 一.安装qtwebkit-bin软件包解决qtwebkit无法编译安装问题 aurman -S qtwebkit-bin 二.安 ...

  5. 浅析requests库响应对象的text和content属性

    在做爬虫时请求网页的requests库是必不可少的,我们常常会用到 res = resquests.get(url) 方法,在获取网页的html代码时常常使用res的text属性: html = re ...

  6. PHP: Browser, Operating System (OS), Device, and Language Detect

    https://github.com/sinergi/php-browser-detector Device.php: <!DOCTYPE html> <html> <h ...

  7. csharp:FTP Client Library using FtpWebRequest or Sockets

    https://netftp.codeplex.com/SourceControl/latest http://ftplib.codeplex.com/ https://www.codeproject ...

  8. Callable接口--有返回值的线程

    Callable java5之前是没有返回值的,Java5新增了Callable接口获得线程的返回值,可返回值的任务必须实现Callable接口,类似的,无返回值的任务必须Runnable接口.Cal ...

  9. 洛谷P4007 小 Y 和恐怖的奴隶主(期望dp 矩阵乘法)

    题意 题目链接 Sol 首先不难想到一种暴力dp,设\(f[i][a][b][c]\)表示还有\(i\)轮没打,场上有\(a\)个1血,\(b\)个2血,\(c\)个三血 发现状态数只有\(s = 1 ...

  10. 【备忘】SQL语句增加字段、修改字段、修改类型、修改默认值

    一.修改字段默认值 alter table 表名 drop constraint 约束名字 ------说明:删除表的字段的原有约束 alter table 表名 add constraint 约束名 ...