广告位联系
返回顶部
分享到

宝塔中ThinkPHP框架使用Redis的教程

Redis 来源:互联网 作者:佚名 发布时间:2023-07-23 08:53:09 人浏览
摘要

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

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

关于redis的安装,在服务器或者虚拟机上安装宝塔面板安装redis,这样很简单就可以使用redis了,记得安装redis的时候不仅要安装redis软件,还要进入项目使用的php版本中安装redis扩展,然后开启redis软件

1.首先在宝塔的安装面板,找到redis,点击安装。

2.安装完redis后,点击设置, 设置个密码

3.php环境安装redis扩展

一定要在网站使用的php版本中,安装redis扩展。

4.创建类处理文件

ThinkPHP根目录的extend文件夹中创建文件 RedisPackage.php,内容如下:

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

97

98

<?php

  

class RedisPackage

{

    protected static $handler = null;

    protected $options = [

        'host' => '127.0.0.1',

        'port' => 6379,

        'password' => '这是你是之前设置的redis密码',

        'select' => 0,

        'timeout' => 20,//关闭时间 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);

    }

  

  

}

类RedisPackage中的定义数组$options,有个健名是password,这里填入上面设置的redis密码

5.在要使用Redis的Controller中,引入文件

1

import('RedisPackage', EXTEND_PATH);

6.简单使用Redis

1

2

3

4

5

#设置

\RedisPackage::set('要设置的key','这是value');

  

#获取

$key = \RedisPackage::get('已设置的key'));

7.Redis扩展

连接redis

1

2

3

4

5

$redis = new \Redis();

//创建一个redis对象,下面可以直接使用$redis访问到redis对象

 

$redis->connect('127.0.0.1', 6379);

//连接redis数据库,127.0.0.1表示本地(如果线上redis和php目录在同一个IP,则一样使用127.0.0.1),6379为redis端口号,若线上没有修改则默认是这个

验证连接是否成功(可写可不写,仅做验证)

1

2

$redis ->set( "test" , "redis 连接成功");

echo $redis ->get( "test");

exists() 判断键是否存在,参数为键名

1

$redis->exists('active_worker_list')

set()

set() 存储键值,第一个参数为自己定义的键名,第二个参数为要存储的数据,通过该方法可以将数据命名之后存入缓存

1

$result = $redis->set('active_worker_list',$r)

很多时候我们存储的是数组类型的数据,但redis不支持读写数组,所以我们需要将数组转成json格式

1

$result = $redis->set('active_worker_list',json_encode($r,true))

get()

get() 获取键值,参数为键名,通过该方法可以获取到对应键中存储的值

1

$result = $redis->get('active_worker_list')

同set一样,很多时候我们需要的是数组类型的数据,所以我们需要将json格式的数据转成数组

1

$result = json_decode($redis->get('active_worker_list'),true);

del()

有时候因为一些原因(有可能只是单纯赋值的时候赋错了......)我们需要删除键值,所以我们要用到del(),参数为键名

1

$redis->del('active_worker_list');


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。

您可能感兴趣的文章 :

原文链接 :
相关文章
  • Redisson如何解决redis分布式锁过期时间到了业务没

    Redisson如何解决redis分布式锁过期时间到了业务没
    Redis锁的过期时间小于业务的执行时间该如何续期? 问题分析 首先如果你之前用Redis的分布式锁的姿势正确,并且看过相应的官方文档的话
  • 宝塔中ThinkPHP框架使用Redis的教程

    宝塔中ThinkPHP框架使用Redis的教程
    Redis是一种常用的非关系型数据库,主要用作数据缓存,数据保存形式为key-value,键值相互映射。它的数据存储跟MySQL不同,它数据存储在内存之中
  • Redis使用Bitmap的方法实现

    Redis使用Bitmap的方法实现
    1. Bitmap 是什么 Bitmap(也称为位数组或者位向量等)是一种实现对位的操作的数据结构,在数据结构加引号主要因为: Bitmap 本身不是一种数据
  • Redis在秒杀场景的作用的介绍

    Redis在秒杀场景的作用的介绍
    秒杀业务特点:限时限量,业务系统要处理瞬时高并发请求,Redis是必需品。 秒杀可分成秒杀前、秒杀中和秒杀后三阶段,每个阶段的请求
  • Redis脑裂导致数据丢失的解决

    Redis脑裂导致数据丢失的解决
    1 案例 主从集群有1个主库、5个从库和3个哨兵实例,突然发现客户端发送的一些数据丢了,直接影响业务层数据可靠性。 最终排查发现是主
  • 使用Redis缓存时高效的批量删除的几种方案
    前因后果 之前我们的服务,在上线的时候发现有一些大Key的使用不是很规范,特别是没有设置过期时间,因此导致redis中内存的数据越来越
  • Redis+Hbase+RocketMQ实际使用问题案例介绍

    Redis+Hbase+RocketMQ实际使用问题案例介绍
    需求 将Hbase数据,解析后推送到RocketMQ。 redis使用list数据类型,存储了需要推送的数据的RowKey及表名。 简单画个流程图就是: 分析及确定方
  • 实现在线 + 离线模式进行迁移Redis数据实战指南

    实现在线 + 离线模式进行迁移Redis数据实战指南
    redis-full-check的使用背景 在经历了之前的文章内容章节内容,已完成Redis迁移后,可能会存在以下问题需要进行数据迁移之后的对比。例如,
  • RedisTemplate访问Redis的更好方法
    开始准备 开始之前我们需要有Redis安装,我们采用本机Docker运行Redis, 主要命令如下 1 2 3 4 docker pull redis docker run --name my_redis -d -p 6379:6379 re
  • redis保存session信息的代码

    redis保存session信息的代码
    1、新建一个maven web 工程名为 session-redis 如下: 目录结构如下: 2、修改配置文件内容 pom.xml 中依赖如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计