PHPRedis入门笔记

5 篇文章 0 订阅

Redis

  • 非关系型数据库
  • 基于内存存在,所以相对于MySQL等运行速度更快
  • 与MySQL相比,无需定义数据字典
  • 是远程的,分Server端和Client端,通过Redis自定义的协议传输与交互,通常我们所说的Redis都是Server端
  • 应用场景
    1. 缓存
    2. 队列(pop,push)
    3. 数据存储(通过硬盘持久化机制)

安装

  • 安装环境

    1. Linux CentOS 6.8
    2. 需要预装软件(gcc、tcl)(yum install即可)
    3. 步骤
      1. 下载Redis源码 wget http://download.redis.io/releases/(具体需要哪个版本自行选择)
      2. 解压并cd到目录中
      3. make && make install (将会放到usr/local/bin下)
    4. cp 安装目录/redis.conf 到 你要放置的目录(备份一下原配置文件,可以在该目录下修改配置文件,启动redis时可以使用该配置文件,或者你直接使用安装目录下的配置文件也可以)
    5. redis.conf 中的设置
      daemonize = no 改为 daemonize = yes (no:前台启动 yes:后台启动)
      port = 7200 (修改端口为7200)
    6. 启动redis(以/目录/redis.conf这个配置文件启动)
      sudo /usr/local/bin/redis-server /目录/redis.conf

    7. 查看redis是否已启动
      ps aux | grep redis-server

    8. 客户端登录,本机登录默认以6379端口登录,因为有修改了端口,所以需要在登录时指定登录端口
      redis-cli -h 127.0.0.1 -p 7200
      info # 查看redis的信息

Redis数据类型

数据类型存储的值读写能力
String可以是字符串、整数或浮点,统称为元素对字符串操作、对整数类型加减
List一个序列集合切每个节点都包含了一个元素序列两端推入或弹出元素,修剪,查看或移除元素
Set各不相同的元素从集合中插入或者删除元素
Hash有key-value的散列祖,其中key是字符串,value是元素按照key进行增加删除
Sort Set带分数的score-value有序集合,其中score为浮点,value为元素集合插入,按照分数范围查找
  • String 格式:key->value(sting、int、float)

    • set string1 test1 # 设置一条数据,key为string1,value为test1
    • get string1 # 获取string1的值
    • set string2 4
    • get string2 # 得到4
    • incr string2 # 自增1操作
    • get string2 # 得到5
    • decrhy string2 2 # 自减2操作
    • get string2 # 得到3
  • List(有序列表)

    • 格式:key->value(12)(左)->value(13)->value(13)->value(14)(右)
    • 队列:左边推入,右边弹出
    • lpush list1 12 # 从左边推入一个元素 l(left):左边 push:推入
    • lpush list1 13
    • rpop list1 # 从右边弹出一个元素,得到12(先入先出)
    • lpush list12 | lpush list2 13 | lpush list 13 # 推入2个相同的元素
    • llent list2 查看list元素的个数(得到3)
  • Set(无序的方式存储多个不同的元素,每个元素的值都不一样)

    • sadd set1 12 # 添加一个set元素
    • sadd set1 13 sadd set1 13 # 添加2个相同的set元素
    • scard set1 # 查看set中有多少个元素(得到2个元素,说明value值不允许重复,必须唯一)
    • sismember set1 13 # 查看13是否存在于这个set中
    • srem set1 13 # 将13这个元素从set中移除
  • Hash(散列类型,将多个键值对存到一个redis键里)

    • 格式:key -> key1=>value1 / key2=>value2 / key3=>value3 / key4=>value4
    • hset hash1 key1 12 hset hash1 key2 13 hset hash1 key3 13 # 设置一个hash元素,只要求key不一样,value值可以一样
    • hget hash1 key1 # 获取hash元素中一个键的值(3个)
    • hlen hash1# 获取hash元素的个数
    • hmget hash1 key1 key2 key3 # 一次性获取多个元素的值
  • Sort Set

    • 格式:key->score(浮点数)=>value(string/int/float)=>rank(int)
    • value必须全局唯一,如果设置相同的value值,不会增加一个元素,会修改score的值。
    • zadd zset1 10.1 val1 # 向sort set中添加一个元素
    • zadd zset1 11.2 val2
    • zadd zset1 9.2 val3
    • zcard zset1 # 查看zset1中有几个元素
    • zrange zset1 0 2 withscores # 获取排名0-2的排名,带分数
    • zrank zset1 val2 # 查看val2 在 zset1 中的排名
    • zadd zset1 12.2 val3 # 将val3的score改为12.2
    • zadd zset1 12.2 val2
    • zrange zset1 0 2 withscores # 获取排名0-2的排名,带分数。val2和val3de分数一样,但是val2中的val等于val3中的val,2小于3,所以val2的排名高于val3

PHP操作Redis

  • [root@localhost ~]# php -m 查看PHP当前安装的扩展,查看是否已安装redis扩展
  • [root@localhost ~]# which phpize 查看phpize命令的位置
  • [root@localhost ~]# which php-config 查看php-config 命令的位置
  • 下载php-redis扩展,安装并打开扩展 (点击查看更多PHP-Redis操作)
[root@localhost ~]# git clone https://github.com/phpredis/phpredis.git # 从GitHub上把PHP-Redis代码下载下来
[root@localhost ~]# cd phpredis
[root@localhost ~]# phpize
[root@localhost ~]# ./configure --with-php-config=/usr/local/php/bin/php-config
[root@localhost ~]# make && make install
[root@localhost ~]# vim /usr/local/php/etc/php.ini # 开启 phpredis扩展
[root@localhost ~]# php -m # 查看redis扩展是否已打开
[root@localhost ~]# cd /data/wwwroot/redis # 进入www目录下的redis目录
[root@localhost ~]# vim connect.php
  • string操作
<?php
    $redis = new \Redis();
    $redis->connect('127.0.0.1');	// 默认6379端口,如果你修改了端口,则为 $redis->connect('127.0.0.1',7200);
    //  string 操作
    $redis->set('string1','value1');s
    $val = $redis->get("string1");
    echo $val;
    echo PHP_EOL;

    $redis->set('string1',4);
    $val = $redis->get('string1');
    echo $val;
    echo PHP_EOL;

    $redis->incr('string1',2);
    $val = $redis->get('string1');
    echo $val;
  • list操作
<?php
    $redis = new \Redis();
    $redis->connect('127.0.0.1');

    // list 操作
    $redis->lPush("list1", "A");   // 从左边推入A
    $redis->lPush("list1", "B");   // 从左边推入B
    $redis->lPush("list1", "C");   // 从左边推入C

    $val = $redis->rPop("list1");  // 从右边弹出
    echo $val;     // 遵循先入先出的原则,未弹出前,list的数值 为 C,B,A 使用rPop则弹出 A
  • set操作
<?php
    $redis = new \Redis();
    $redis->connect('127.0.0.1');

    // set 操作
    $redis->sAdd('set1', "A");
    $redis->sAdd('set1', "B");
    $redis->sAdd('set1', "C");
    $redis->sAdd('set1', "C"); // 由于set中元素必须唯一,所以实际上只插入了3个元素

    $val = $redis->sCard("set1");
    var_dump($val);    // 3

    $val = $redis->sMembers("set1");
    var_dump($val);
    /**
     * array(3) {
     *     [0] => string(1) "A"
     *     [1] => string(1) "B"
     *     [2] => string(1) "C"
     * }
     */
  • hash操作
<?php
    $redis = new \Redis();
    $redis->connect('127.0.0.1');

    // hash 操作
    // 设置driver1的name
    $redis->hSet('driver1', 'name', 'jack');
    // 设置driver1的age
    $redis->hSet('driver1', 'age', 25);
    // 设置driver1的sex
    $redis->hSet('driver1', 'sex', 1);
    // hGet - 获取driver1的name值
    $val = $redis->hGet('driver1', 'name');
    var_dump($val);
    // hMGet - 获取driver1的多个key的值
    $val = $redis->hMGet('driver1', array('name','age'));
    var_dump($val);
  • sort set操作
<?php
    $redis = new \Redis();
    $redis->connect('127.0.0.1');

    // sort set操作
    // 往key值为zset1添加数据
    $redis->zAdd('zset1', 90, 'userA');    // rank:2
    $redis->zAdd('zset1', 99, 'userB');    // rank:1
    $redis->zAdd('zset1', 70, 'userC');    // rank:4
    $redis->zAdd('zset1', 80, 'userD');    // rank:3

    // zRange(key, start, end);
    $val = $redis->zRange('zset1', 0, -1); // 从低到高
    var_dump($val);

    $val = $redis->zRevRange('zset1', 0, -1); // 从高到低
    var_dump($val);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值