<?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. FCKEditor的使用步骤

    在线发布信息难免要用到在线编辑器,下面就说下在线编辑器的使用步骤: 1.下载FCK,这个不说了 2.把ZZGSEditor文件夹放到网站根目录 3.把FredCK.FCKeditorV2.dll文件放 ...

  2. 动态规划法(五)钢条切割问题(rod cutting problem)

      继续讲故事~~   我们的主人公现在已经告别了生于斯,长于斯的故乡,来到了全国最大的城市S市.这座S市,位于国家的东南部,是全国的经济中心,工商业极为发达,是这个国家的人民所向往的城市.这个到处都 ...

  3. VirtualBox安装CentOS7

    一:.下载CentOS7的镜像 下载地址:https://www.centos.org/download/ 进入后有三个版本可以选择: 1.DVD ISO  标准安装版,一般下载这个就可以了(推荐)本 ...

  4. sqlserver 级联删除、级联更新

    增加外键约束时,设置级联更新.级联删除:[ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ][ ON UPDATE { NO A ...

  5. laravel使用JSON 类型方式进行存储

    Laravel 从 5.0 版本开始就已支持 JSON 数据的转换,但这样做的目的只是为了方便数据处理.你的数据依然以 TEXT 类型存放在你的数据库里.不过 MySQL 从 5.7 版本起开始支持原 ...

  6. Team Foundation Server 2013 KEY(密钥)

    isual Studio Ultimate 2013 KEY(密钥):BWG7X-J98B3-W34RT-33B3R-JVYW9 Visual Studio Premium 2013 KEY(密钥): ...

  7. 洛谷P3721 [AH2017/HNOI2017]单旋(线段树 set spaly)

    题意 题目链接 Sol 这题好毒瘤啊.. 首先要观察到几个性质: 将最小值旋转到根相当于把右子树变为祖先的左子树,然后将原来的根变为当前最小值 上述操作对深度的影响相当于右子树不变,其他的位置-1 然 ...

  8. demo:动态生成专属二维码

    在日常生活中,随处可见二维码,那么js如何生成动态的专属二维码?其实,通过"二维码插件"我们可以快速生成二维码.在这,记录一下的生成专属二维码demo,一起来看看jquery.qr ...

  9. GitHub使用SSHkey进行连接

    SSH key的配置基本是我们使用git必备的配置,配置好可以避免频繁的在git push或者git pull的时候输入账号和密码 本来我的SSH key早就配置好了,结果他不起作用了,那就在配置一次 ...

  10. 【读书笔记】iOS-xib,自动布局(二)

    我们紧接着上面的文章来写. 一,此时没有选择自动布局的时候 . 二,选中Use Auto Layout.如下图所示. 三,自动布局与不自动布局最明显的区别是右下角多了4个按钮.如图所示. 四,设置On ...