<?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. Shell 函数定义与调用

    linux shell 可以用户定义函数,然后在 shell 脚本中可以随便调用. 以一个计算两数之和的函数为例: #! /bin/bash # 函数定义 sum(){ return $(($1+$2 ...

  2. (白话理解)CAS机制

    (白话理解)CAS机制 通过一段对话我们来了解cas用意 示例程序:启动两个线程,每个线程中让静态变量count循环累加100次. 最终输出的count结果是什么呢?一定会是200吗? 加了同步锁之后 ...

  3. Mysql无法选取非聚合列

    教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步>>> (原文)Mysql 无法选取非聚合列. 更多讨论或者错误提交,也请移步. 1. 前言 最近升级博客,给文章页 ...

  4. Linux常用基本命令:tr-替换或者删除字符

    tr命令 作用:从标准输入中替换,缩减或者删除字符,并将结果输出到标准输出 格式:tr [option] [set1] [set2] tr [选项] [字符1] [字符2] 把y替换m, o替换e,并 ...

  5. Codeforces672D(SummerTrainingDay01-I)

    D. Robin Hood time limit per test:1 second memory limit per test:256 megabytes input:standard input ...

  6. Python全栈学习_day002知识点

    今日大纲: . while循环 . 格式化输出 . 运算符 . 编码初识 1. while循环 - while 无限循环: while True: # 死循环 print('大悲咒') print(' ...

  7. Power BI 与 Azure Analysis Services 的数据关联:3、还原备份文件到Azure Analysis Services

    Power BI 与 Azure  Analysis Services 的数据关联:3.还原备份文件到Azure  Analysis Services 配置存储设置 备份前,需要为服务器配置存储设置. ...

  8. Python从入门到精通

    最近研究了一下Python,名不虚传,确实挺精彩. 学习一门新的语言,我认为从入门到精通的做法是:下SDK.装IDE.练教程.结合工作应用.不断踩坑进阶.梳理总结 1.下SDK(2.7.15) 下载地 ...

  9. Python:GUI之tkinter学习笔记之messagebox、filedialog

    相关内容: messagebox 介绍 使用 filedialog 介绍 使用 首发时间:2018-03-04 22:18 messagebox: 介绍:messagebox是tkinter中的消息框 ...

  10. scala spark 机器学习初探

    Transformer: 是一个抽象类包含特征转换器, 和最终的学习模型, 需要实现transformer方法 通常transformer为一个RDD增加若干列, 最终转化成另一个RDD, 1. 特征 ...