Code Monkey home page Code Monkey logo

php-redis's Introduction

PHP-Redis 扩展应用类

(开始在 PHP 中使用 Redis 前, 请确保已经安装了 redis 服务及 PHP redis 驱动)

这是一个Redis应用类,所有方法均使用静态调用(包含字符串方法,哈希表,列表,集合,有序集合常用方法封装)

实例化类配置参数说明:$redis = new redis\Redis($config);

$config = [
    'host' => '127.0.0.1',  //服务器连接地址。默认='127.0.0.1'
    'port' => '6379',  //端口号。默认='6379'
    'expire' => 3600,  // 默认全局过期时间,单位秒。不填默认3600
    'password' => '',  // 连接密码,如果有设置密码的话
    'db' => 0,   //缓存库选择。默认0
    'timeout' => 10  // 连接超时时间(秒)。默认10
];

/*不用配置所有的参数,只需要配置和默认配置不同的参数即可,如:
$config = [
    'password' => '123456',
    'expire' => 7200
];*/

如果不需要更改默认参数值的话,不需要传入任何参数:$redis = new redis\Redis();

如果你放在框架里用(或有自动加载机制),直接命名空间引入即可用,不需要实例化类!

use redis\Redis; 就可直接静态调用了

如thinkphp框架,把文件夹redis放入extend目录下,在控制器中使用如:

<?php
namespace app\index\controller;
use redis\Redis;
class Index
{
    public function index()
    {
        ........
        Redis::set('key', 'value', 7200);
        $res = Redis::get('key');
        ........

        /*---------------支持事务-----------*/
        //开启事务:
        Redis::transation();

        //执行队列
        Redis::set($key, $value);
        Redis::hset($table,$column,$value);
        ......

        //提交事务
        Redis::commit();
        //取消事务 Redis::discard();
    }
}

具体方法说明如下:(以下$redis变量表示Redis对象)如果想使用原生的方法也可以,如:$redis::myself()->set($key, $value);

  • $redis::selectdb($db);

切换到指定的数据库, 数据库索引号用数字值指定

参数说明:

$db int [指定的库]

  • $redis::savedb();

创建当前数据库的备份(该命令将在 redis 安装目录中创建dump.rdb文件)

return bool 成功true否则false (如果需要恢复数据,只需将备份文件 (dump.rdb) 移动到 redis 安装目录并启动服务即可)

  • $redis::set($key, $value, $expire=0);

存储一个键值 (支持数组、对象)

参数说明:(参数名,类型,[中文说明])

$key string | int [ 键名]

$value mix [要存储的值,支持数组、对象]

$expire int [过期时间(秒),如果使用全局过期时间配置,可以不填]

return bool [返回布尔值,成功true, 否则false]

  • $redis::expire($key, $expire=0);

设置过期时间(秒)

参数说明:(参数名,类型,[中文说明])

$key string | int [ 键名]

$expire int [过期时间(秒),如果使用全局过期时间配置,可以不填]

return bool [返回布尔值,成功true, 否则false]

  • $redis::get($key);

获取一个键值

参数说明:

$key string | int [键名]

return mix [返回键值,如果键不存在则返回false]

  • $redis::del($key);

删除一个键值

参数说明:

$key string | int [键名]

return mix [删除成功返回 1,删除失败或键不存在返回 0]

  • $redis::substr($key, $start, $end=0);

截取缓存字符串值(支持汉字)

参数说明:

$key string | int [键名]

$start int [起始位置,从0开始记]

$end int [截取长度,默认值0表示截取从起始位置到最后一个字符]

return string [返回字符串,如果键不存在或取值不是字符串类型则返回 false]

  • $redis::replace($key, $value, $expire=0);

设置指定 key 的值,并返回 key 的旧值(支持数组)

参数说明:

$key string | int [键名]

$value mix [要指定的键值]

$expire int [过期时间,如果不设置则用全局过期配置]

return mix [返回旧值,如果旧值不存在则返回false,并新创建key的键值]

  • $redis::mset($arr);

同时设置一个或多个键值对。(支持键值为数组)

参数说明:

$arr array [要设置的键值对数组]

return bool [返回布尔值,成功true否则false]

  • $redis::mget($args)

返回所有(一个或多个)给定 key 的值

参数说明:

可传入一个或多个键名参数,键名字符串类型,如 $values = $redis::mget('one','two','three', ...);

返回包含所有指定键值的数组,如果值不存在则返回false

  • $redis::expiretime($key);

查询剩余过期时间(秒)

参数说明:

$key string | int [键名]

return int [返回剩余的存活时间(秒),如果已过期则返回负数]

  • $redis::setnx($key, $value, $expire=0);

指定的 key 不存在时,为 key 设置指定的值(SET if Not eXists)

参数说明:

$key string | int [键名]

$value mix [要指定的键值]

$expire int [过期时间,如果不设置则用全局过期配置]

return bool [设置成功返回true否则false]

  • $redis::valuelen($key);

返回字符串的长度,如果键值是数组则返回数组元素的个数

参数说明:

$key string | int [键名]

return int [返回长度值,如果键值不存在则返回0]

  • $redis::inc($key, $int=0);

将 key 中储存的数字值自增

参数说明:

$key string | int [键名]

$int int [$int 自增量,如果不填则默认是自增量为 1]

return int | bool [返回自增后的值,如果键不存在则新创建值为0并返回自增后的数值.如果键值不是可转换的整数,则返回false]

  • $redis::dec($key, $int=0);

将 key 中储存的数字值自减

参数说明:

$key string | int [键名]

$int int [$int 自减量,如果不填则默认是自减量为 1]

return int | bool [返回自减后的值,如果键不存在则新创建值为0并返回自减后的数值.如果键值不是可转换的整数,则返回false]

  • $redis::append($key, $value, $pos=false, $expire=0);

为指定的 key 追加值(追加至末尾或开头位置,支持数组值追加)

参数说明:

$key string | int [键名]

$value string | array [要指定的键值]

$pos bool [追加的位置,默认false为末尾,true为向开头位置追加]

$expire int [过期时间,如果不设置则用全局过期配置]

return bool [设置成功返回true否则false,向字符串值追加时加入的值必须为字符串类型。如果键不存在则创建新的键值对]

  • $redis::hset($table, $column, $value, $expire=0);

为哈希表中的字段赋值

参数说明:

$table string [哈希表名]

$column string [字段名]

$value string | array [字段值,如果传入的是数组则自动转换为json字符串]

$expire int [过期时间,如果不填,默认0为不设置过期时间]

return int 如果成功返回 1,否则返回 0.当字段值已存在时覆盖旧值并且返回 0

  • $redis::hget($table, $column);

获取哈希表字段值

参数说明:

$table string [哈希表名]

$column string [字段名]

return string 返回字段值,如果字段值是数组保存的返回json格式字符串,转换成数组json_encode($value),如果字段不存在返回false

  • $redis::hdel($table, $column1, $column2, ....);

删除哈希表 key 中的一个或多个指定字段,不存在的字段将被忽略(删除整个哈希表用$redis::del($table))

参数说明:

$table string [哈希表名]

$column string [字段名]

return int 返回被成功删除字段的数量,不包括被忽略的字段,(删除哈希表用$redis::del($table))

  • $redis::hexists($table, $column);

查看哈希表的指定字段是否存在

参数说明:

$table string [哈希表名]

$column string [字段名]

return bool 存在返回true,否则false

  • $redis::hgetall($table);

返回哈希表中,所有的字段和值(键值对数组)

参数说明:

$table string [哈希表名]

return array 返回键值对数组

  • $redis::hinc($table, $column, $num=1);

为哈希表中的字段值加上指定增量值(支持整数和浮点数)

参数说明:

$table string [哈希表名]

$column string [字段名]

$num int [增量值,默认1,也可以填入负数值,相当于对指定字段进行减法操作]

return int|float|bool 返回计算后的字段值,如果字段值不是数字值则返回false,如果哈希表不存在或字段不存在返回false

  • $redis::hkeys($table);

获取哈希表中的所有字段

参数说明:

$table string [哈希表名]

return array 返回包含所有字段的数组

  • $redis::hvals($table);

获取哈希表中的所有字段值

参数说明:

$table string [哈希表名]

return array 返回包含所有字段值的数组,数字索引

  • $redis::hlen($table);

获取哈希表中字段的数量

参数说明:

$table string [哈希表名]

return int 返回字段数量,如果哈希表不存在则返回0

  • $redis::hmget($table, $column1, $column2, ....);

获取哈希表中,一个或多个给定字段的值

参数说明:

$table string [哈希表名]

$columns string [字段名,可传多个]

return array 返回键值对数组,如果字段不存在则字段值为null, 如果哈希表不存在返回空数组

  • $redis::hmset($table, array $data, $expire=0);

同时将多个 field-value (字段-值)对设置到哈希表中

参数说明:

$table string [哈希表名]

$data array [要添加的键值对]

$expire int [过期时间,默认值0或不填则不设置过期时间]

return bool 成功返回true,否则false

  • $redis::hsetnx($table, $column, $value, $expire=0);

为哈希表中不存在的的字段赋值

参数说明:

$table string [哈希表名]

$column string [字段名]

$value mix [字段值]

$expire int [过期时间,默认值0或不填则不设置过期时间]

return bool 成功返回true,否则false

  • $redis::lpush($list, $value, $pop='first', $expire=0);

将一个或多个值插入到列表头部(值可重复)或列表尾部。如果列表不存在,则创建新列表并插入值将一个或多个值插入到列表头部。如果列表不存在,则创建新列表并插入值

参数说明:

$list string [列表名]

$value string|array [要插入的值,如果要插入多个值请传入多个值的数组]

$pop string [要插入的位置,默认first头部,last表示尾部]

$expire int [过期时间,默认值0或不填则不设置过期时间]

return int 返回列表的长度

  • $redis::lindex($list, $index=0);

通过索引获取列表中的元素

参数说明:

$list string [列表名]

$index int 索引位置,从0开始计,默认0表示第一个元素,-1表示最后一个元素索引

return string 返回指定索引位置的元素

  • $redis::lset($list, $index, $value);

通过索引来设置元素的值

参数说明:

$list string [列表名]

$index int [索引位置]

$value string [要设置的值]

return bool 成功返回true,否则false.当索引参数超出范围,或列表不存在返回false。

  • $redis::lrange($list, $start=0, $end=-1);

返回列表中指定区间内的元素

参数说明:

$list string [列表名]

$start int 起始位置,从0开始计,默认0

$end int 结束位置,-1表示最后一个元素,默认-1

return array 返回列表元素数组

  • $redis::llen($list);

返回列表的长度

参数说明:

$list string [列表名]

return int 返回列表长度

  • $redis::lpop($list, $pop='first');

移出并获取列表的第一个元素或最后一个元素(默认第一个元素)

参数说明:

$list string [列表名]

$pop string [移出并获取的位置,默认first第一个元素,设为last则为最后一个元素]

return string|bool 移出并返回列表第一个元素或最后一个元素,如果列表不存在则返回false

  • $redis::lpoppush($list1, $list2);

从列表1中弹出最后一个值,将弹出的元素插入到另外一个列表2开头并返回这个元素

参数说明:

$list1 string [要弹出元素的列表名]

$list2 string [要接收元素的列表名]

return string|bool 返回被弹出的元素,如果其中有一个列表不存在则返回false

  • $redis::lisert($list, $element, $value, $pop='before');

用于在指定的列表元素前或者后插入元素。如果元素有重复则选择第一个出现的位置。当指定元素不存在于列表中时,不执行任何操作

参数说明:

$list string [列表名]

$element string [指定的元素]

$value string [要插入的元素]

return int 返回列表的长度。 如果没有找到指定元素 ,返回 -1 。 如果列表不存在或为空列表,返回 0 。

  • $redis::lrem($list, $element, $count=0);

移除列表中指定的元素

参数说明:

$list string [列表名]

$element string [指定的元素]

$count int [要删除的个数,0表示删除所有指定元素,负整数表示从表尾搜索, 默认0]

return int 返回被移除元素的数量。 列表不存在时返回 0

  • $redis::ltrim($list, $start, $stop);

让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除

参数说明:

$list string [列表名]

$start int [起始位置,从0开始计]

$stop int [结束位置,负数表示倒数第n个位置]

return bool 成功返回true否则false

  • $redis::sadd($set, $member);

将一个或多个成员加入到集合中,已经存在于集合的元素将被忽略.如果集合不存在,则创建。(无序集合)

参数说明:

$set string [集合名称]

$member string|array [要加入的值,如果要加入多个值请传入多个值的数组]

return int 返回被添加元素的数量

  • $redis::smembers($set);

返回无序集合中的所有的成员

参数说明:

$set string [集合名称]

return array 返回包含所有成员的数组

  • $redis::scard($set);

获取集合中元素的数量。

参数说明:

$set string [集合名称]

return int 返回集合的成员数量

  • $redis::spop($set);

移除并返回集合中的一个随机元素

参数说明:

$set string [集合名称]

return string|bool 返回移除的元素,如果集合为空则返回false

  • $redis::srem($set, $member);

移除集合中的一个或多个成员元素,不存在的成员元素会被忽略

参数说明:

$set string [集合名称]

$member string|array [要移除的元素,如果要移除多个元素请传入多个元素的数组]

return int 返回被移除元素的个数

  • $redis::srand($set, $count=0);

返回集合中的一个或多个随机元素

参数说明:

$set string [集合名称]

$count int [要返回的元素个数,0表示返回单个元素,大于等于集合基数则返回整个元素数组。默认0]

return string|array [返回随机元素,如果是返回多个则为数组返回]

  • $redis::sdiff($set1, $set2);

返回给定集合之间的差集(集合1相对于集合2的差集)。不存在的集合将视为空集

参数说明:

$set1 string [集合1名称]

$set2 string [集合2名称]

return array 返回差集数组(即筛选存在集合1中但不存在于集合2中的元素)

  • $redis::sdiffstore($set, $set1, $set2);

将给定集合set1和set2之间的差集存储在指定的set集合中。如果指定的集合已存在,则会被覆盖。

参数说明:

$set string [指定存储的集合]

$set1 string [集合1]

$set2 string [集合2]

return int 返回指定存储集合元素的数量

  • $redis::sinter($set1, $set2);

返回set1集合和set2集合的交集(即筛选同时存在集合1和集合2中的元素)

参数说明:

$set1 string [集合1]

$set2 string [集合2]

return array 返回包含交集元素的数组

  • $redis::sinterstore($set, $set1, $set2);

将给定集合set1和set2之间的交集存储在指定的set集合中。如果指定的集合已存在,则会被覆盖。

参数说明:

$set string [指定存储的集合]

$set1 string [集合1]

$set2 string [集合2]

return int 返回指定存储集合元素的数量

  • $redis::sismember($set, $member);

判断成员元素是否是集合的成员

参数说明:

$set string [集合名称]

$member string [要判断的元素]

return bool 如果成员元素是集合的成员返回true,否则false

  • $redis::remove($set1, $set2, $member);

将元素从集合1中移动到集合2中

参数说明:

$set1 string [集合1]

$set2 string [集合2]

$member string [要移动的元素]

return bool 成功返回true,否则false

  • $redis::sunion($set1, $set2);

返回集合1和集合2的并集(即两个集合合并后去重的结果)。不存在的集合被视为空集。

参数说明:

$set1 string [集合1]

$set2 string [集合2]

return array 返回并集数组

  • $redis::sunionstore($set, $set1, $set2);

将给定集合set1和set2之间的交集存储在指定的set集合中。如果指定的集合已存在,则会被覆盖。

参数说明:

$set string [指定存储的集合]

$set1 string [集合1]

$set2 string [集合2]

return int 返回指定存储集合元素的数量

  • $redis::zadd($set, $arr);

将一个或多个成员元素及其分数值加入到有序集当中,如果成员已存在则更新它的分数值,如果集合不存在则创建

参数说明:

$set string [集合名称]

$arr array [成员元素与其分数值的键值对数组(键是唯一的),如 $arr=['one'=>2.5]]

return int 返回添加成功的成员数量

  • $redis::zrange($set, $start=0, $stop=-1, $desc=false);

返回有序集中,指定区间内的成员。默认返回所有成员(默认升序排列)

参数说明:

$set string [集合名称]

$start int [起始位置,从0开始计,默认0]

$stop int [结束位置,-1表示最后一位,默认-1]

$desc bool [false默认升序排序,true为倒序]

return array 返回有序集合中指定区间内的成员数组(默认返回所有)

  • $redis::acard($set);

返回有序集合中成员数量

参数说明:

$set string [集合名称]

return int [返回有序集合的成员数量]

  • $redis::zcount($set, $min, $max);

计算有序集合中指定分数区间的成员数量

参数说明:

$set string [集合名称]

$min int|float [最小分数值]

$max int|float [最大分数值]

return int 返回指定区间的成员数量

  • $redis::zinc($set, $member, $num=1);

对有序集合中指定成员的分数加上增量

参数说明:

$set string [集合名称]

$member string [指定的元素]

$num int|float [增量,负数值表示减法运算]

return float 返回运算后的分数值(浮点型)

  • $redis::zinterstore($set, $set1, $set2);

计算set1和set2有序集的交集,并将该交集(结果集)储存到新集合set中。

参数说明:

$set string [要存储的集合名称]

$set1 string [集合1]

$set2 string [集合2]

return int 返回保存到目标结果集的成员数量

  • $redis::zunionstore($set, $set1, $set2);

计算set1和set2有序集的并集,并将该并集(结果集)储存到新集合set中。

参数说明:

$set string [要存储的集合名称]

$set1 string [集合1]

$set2 string [集合2]

return int 返回保存到目标结果集的成员数量

  • $redis::zrangebyscore($set, $min, $max, $withscores=true);

返回有序集合中指定分数区间的成员列表。有序集成员按分数值递增(从小到大)次序排列

参数说明:

$set string [集合名称]

$min string [最小分数值字符串表示,如:'1'表示>=1,'(1'表示>1]

$max string [最大分数值字符串表示,如:'100'表示<=1,'(100'表示<100]

$withscores bool 返回的数组是否包含分数值,默认true, false不包含

return array 返回指定区间的成员,默认是元素=>分数值的键值对数组。如果只要返回包含元素的数组请设置$withscores=false

  • $redis::zrank($set, $member);

返回有序集中指定成员的排名。其中有序集成员按分数值递增(从小到大)顺序排列

参数说明:

$set string [集合名称]

$member string [要排名的成员]

return int|bool 返回 member 的排名, 如果member不存在返回false

  • $redis::zrem($set, $members);

移除有序集中的一个或多个成员,不存在的成员将被忽略

参数说明:

$set string [集合名称]

$members string|array [要移除的成员,如果要移除多个请传入多个成员的数组]

return int 返回被移除的成员数量,不存在的成员将被忽略

  • $redis::zrembyscore($set, $min, $max);

移除有序集中,指定分数(score)区间内的所有成员。

参数说明:

$set string [集合名称]

$min int|float [最小分数值]

$max int|float [最大分数值]

return int 返回被移除的成员数量

  • $redis::zrembyrank($set, $min, $max);

移除有序集中,指定排名(rank)区间内的所有成员(这个排名数字越大排名越高,最低排名0开始)

参数说明:

$set string [集合名称]

$min int [最小排名,从0开始计]

$max int [最大排名]

return int 返回被移除的成员数量

  • $redis::zscore($set, $member);

返回有序集中,成员的分数值。

参数说明:

$set string [集合名称]

$members string [成员]

return float|bool 返回分数值(浮点型),如果成员不存在返回false

php-redis's People

Contributors

xcjiu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

php-redis's Issues

关于set浮点数失误的问题

关于set方法,我测试了下$redis->set('test',13.6);取出来正常的?redis版本3.0.7

 /**
     * 存储一个键值
     * @param  string or int $key 键名
     * @param  mix $value 键值,支持数组、对象
     * @param  int $expire 过期时间(秒)
     * @return bool 返回布尔值
     */
    public static function set($key, $value, $expire='')
    {
        if(is_int($key) || is_string($key)){
            //如果是int类型的数字就不要序列化,否则用自增自减功能会失败,
            //如果不序列化,set()方法只能保存字符串和数字类型,
            //如果不序列化,浮点型数字会有失误,如13.6保存,获取时是13.59999999999
            $value = is_int($value) ? $value : serialize($value);
            $expire = (int)$expire ? $expire : self::$expire;
            if(self::$redis->set($key, $value) && self::$redis->expire($key, $expire)){
                return true;
            }
            return false;
        }
        return false;
    }

还有 sadd支持数组,不用循环sadd

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.