ThinkPHP5.0中Redis的使用和封装

Redis是一种常用的非关系型数据库,主要用作数据缓存,数据保存形式为key-value,键值相互映射.它的数据存储跟MySQL不同,它数据存储在内存之中,所以数据读取相对而言很快,用来做高并发非常不错.

ThinkPhP5.0自带了Redis扩展,在使用之前先下载php_redis.dll 网址 http://windows.php.net/downloads/pecl/releases/redis/2.2.7/ ;根据自己windows操作系统选择相应的版本,我自己是系统64位,安装的是VC2012 所以下载的是php_redis-2.2.7-5.6-ts-vc11-x64.zip

下载好压缩包之后,把里面的php_redis.dll 解压到D:\wamp\bin\php\php5.6.25\ext (根据自己wamp所在的盘自己选择),然后在php.ini里面添加extension=php_redis.dll,重新启动apache就可以了;

下面是我自己测试的代码,可以使用,封装的不多,可以根据自己的需求去动手封装

extend 是thinkPHP5.0的扩展类库目录,可以自己去定义


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

namespace My;  //目录我放在thinkphp5.0/extend/My 

class RedisPackage

{

    protected static $handler = null;

    protected $options = [

        ‘host‘ => ‘127.0.0.1‘,

        ‘port‘ => 6379,

        ‘password‘ => ‘‘,

        ‘select‘ => 0,

        ‘timeout‘ => 0,    //关闭时间 0:代表不关闭

        ‘expire‘ => 0,

        ‘persistent‘ => false,

        ‘prefix‘ => ‘‘,

    ];

    public function __construct($options = [])

    {

        if (!extension_loaded(‘redis‘)) {   //判断是否有扩展(如果你的apache没reids扩展就会抛出这个异常)

            throw new \BadFunctionCallException(‘not support: redis‘);     

        }

        if (!empty($options)) {

            $this->options = array_merge($this->options, $options);

        }

        $func $this->options[‘persistent‘] ? ‘pconnect‘ ‘connect‘;     //判断是否长连接

        self::$handler new \Redis;

        self::$handler->$func($this->options[‘host‘], $this->options[‘port‘], $this->options[‘timeout‘]);

        if (‘‘ != $this->options[‘password‘]) {

            self::$handler->auth($this->options[‘password‘]);

        }

        if (0 != $this->options[‘select‘]) {

            self::$handler->select($this->options[‘select‘]);

        }

    }

    /**

     * 写入缓存

     * @param string $key 键名

     * @param string $value 键值

     * @param int $exprie 过期时间 0:永不过期

     * @return bool

     */

    public static function set($key$value$exprie = 0)

    {

        if ($exprie == 0) {

            $set = self::$handler->set($key$value);

        else {

            $set = self::$handler->setex($key$exprie$value);

        }

        return $set;

    }

    /**

     * 读取缓存

     * @param string $key 键值

     * @return mixed

     */

    public static function get($key)

    {

        $fun is_array($key) ? ‘Mget‘ ‘get‘;

        return self::$handler->{$fun}($key);

    }

    /**

     * 获取值长度

     * @param string $key

     * @return int

     */

    public static function lLen($key)

    {

        return self::$handler->lLen($key);

    }

    /**

     * 将一个或多个值插入到列表头部

     * @param $key

     * @param $value

     * @return int

     */

    public static function LPush($key$value$value2 = null, $valueN = null)

    {

        return self::$handler->lPush($key$value$value2$valueN);

    }

    /**

     * 移出并获取列表的第一个元素

     * @param string $key

     * @return string

     */

    public static function lPop($key)

    {

        return self::$handler->lPop($key);

    }

}

时间: 2024-12-13 00:57:06

ThinkPHP5.0中Redis的使用和封装的相关文章

as3.0 中对TextField的小封装,使其成为一个还不错的输入框

package myComponent  { import flash.display.Shape; import flash.display.Sprite; import flash.text.TextField; import flash.text.TextFieldType; import flash.text.TextFormat; import flash.text.TextLineMetrics; public class MyInput extends Sprite { priva

thinkPHP5.0中使用header跳转没作用

我在controller中的方法中这样写: header("Location:".$url); 但是一直没动静,不会跳转,最后还是官方文档解决了 https://www.kancloud.cn/manual/thinkphp5/118051 使用 $this->redirect($url,302); 但是不明白为什么 原文地址:https://www.cnblogs.com/ningqing2015/p/9958002.html

thinkPHP5.0中的setInc,setDec方法

---恢复内容开始--- thinkphp中setInc.setDec方法 可用于统计字段(通常是数字类型的字段)的更新,例如积分,等级,登陆次数等 必须配合连贯操作where一起使用 1 $User = M("User"); // 实例化User对象 2 $User->where('id=5')->setInc('score',3); // 用户的积分加3 3 $User->where('id=5')->setInc('score'); // 用户的积分加1

ThinkPHP5.0中的build.php自动生成所需的目录结构的详细方法

一.来到根目录下,找到bulid.php文件进行改写. 改写方法:保留常用的目录结构,其余按照需求改吧! 二.复制一份build.php文件到application目录下 此时根目录下的bulid.php文件可以删除了,tp5生成目录结构和文件用到的是application里面的bulid.php文件, 但是根目录下的建议留下下次使用. 三.打开cmd来到tp5.0的根目录下. 四.运行以下代码(开始编译生成文件). php think build --config build.php 五.生成

thinkphp5.0 中使用第三方无命名空间的类库

ThinkPHP5建议所有的扩展类库都使用命名空间定义,如果你的类库没有使用命名空间,则不支持自动加载,必须使用Loader::import方法先导入文件后才能使用. 首先要在文件头部使用loader thinkphp系统类 use think\Loader; 页面内使用 Loader::import('文件夹.文件名',EXTEND_PATH); 引入后实例化类 在类名前加  \类名 既可以使用该类

thinkphp5.0 中简单处理微信支付异步通知

1 public function wx_notify(){ 2 $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; 3 libxml_disable_entity_loader(true); 4 $xml = json_decode(json_encode(simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA)), true); 5 if($xml['out_trade_

PHP(ThinkPHP5.0) + PHPMailer 进行邮箱发送验证码

GitHub下载最新版第三方类库PHPMailer: 第一步: 打开网址https://github.com/PHPMailer/PHPMailer/ 下载PHPMailer,PHPMailer 需要 PHP 的 sockets 扩展支持,而登录 QQ 邮箱 SMTP 服务器则必须通过 SSL 加密的, PHP 还得包含 openssl 的支持. 第二步:使用 phpinfo() 函数查看 socket 和 openssl 扩展信息(wamp server 默认启用了该扩展). openssl

spring3.0结合Redis在项目中的运用

推荐一个程序员的论坛网站:http://ourcoders.com/home/ 以下内容使用到的技术有:Redis缓存.SpringMVC.Maven.项目中使用了redis缓存,目的是在业务场景中,提高SQL的查询效率,做出性能优化.先看pom.xml的配置文件中,Jedis是Redis的Java客户端,Jedis基本实现了Redis的所有功能.在使用的时候,我们创建一个Jedis对象,通过操作Jedis来操作Redis,实现我们的业务场景需求.项目中使用了Maven来托管,先看Jedis在p

SpringBoot(三) :Spring boot 中 Redis 的使用

前言: 这一篇讲的是Spring Boot中Redis的运用,之前没有在项目中用过Redis,所以没有太大的感觉,以后可能需要回头再来仔细看看. 原文出处: 纯洁的微笑 SpringBoot对常用的数据库支持外,对NoSQL 数据库也进行了封装自动化. redis介绍 Redis是目前业界使用最广泛的内存数据存储.相比memcached,Redis支持更丰富的数据结构,例如hashes, lists, sets等,同时支持数据持久化.除此之外,Redis还提供一些类数据库的特性,比如事务,HA,