0

0

PHP使用Redis实例讲解

小云云

小云云

发布时间:2018-02-27 11:50:57

|

12825人浏览过

|

来源于php中文网

原创


redis是一个开源的使用ansi c语言编写、支持网络、可基于内存亦可持久化的日志型、key- value数据库,并提供多种语言的api。redis支持的数据类型有 string(字符串), list(列表), hash(字典), set(集合), sorted set(有序集合);redis默认端口6379。

1. 连接

$redis = new Redis();  // 实例化$redis->connect('127.0.0.1', 6379);  // 连接$redis->auth('redis密码');   // 没密码的redis可忽略此步骤

2. 数据类型

2-1 string字符串

// 存储或更改$redis->set('test', 'aaa');// 获取值$redis->get('test');   // aaa

2-2 list列表

方法中的l代表list操作
  1. 存储

    立即学习PHP免费学习笔记(深入)”;

    $redis->lpush('list', 'a');    // 从左边加入$redis->lpush('list', 'b');$redis->lpush('list', 'c');        
    
    $redis->rpush('list', 'd');    // 从右边加入$redis->lset('list', 2, 'e');// 设置或更改列表指定位置的值,成功返回1,失败返回错误信息
  2. 删除

    51shop 网上商城系统
    51shop 网上商城系统

    51shop 由 PHP 语言开发, 使用快速的 MySQL 数据库保存数据 ,为中小型网站实现网上电子商务提供一个完美的解决方案.一、用户模块1. 用户注册:用户信息包括:用户ID、用户名、用户密码、性别、邮箱、省份、城市、 联系电话等信息,用户注册后不能立即使用,需由管理员激活账号,才可使用(此功能管理员可设置)2. 登录功能3. 资料修改:用户可修改除账号以后的所有资料4. 忘记密码:要求用

    下载
    $redis->lpop('list');      // 删除左边第一个$redis->rpop('list');      // 删除右边第一个// $redis->lrem('list名', '值', num); // 根据值删除元素,第二个参数是要删除的值(值为这个值的元素要被删除),// 第三个参数 num 表示:从哪开始删、删几个,
        //num>0 从表头往表尾删,删除num个结束;
        //num<0 从表尾往表头删,删除 |num| 个;
        //num=0 移除表中所有值为'b'的元素
        $redis->lrem('list', 'b', 2);
  3. 获取,返回数组

    $redis->lrange('list', 0, -1);  // 返回一个数组。存储在key中的列表里指定范围的元素, 
        // 第一个参数是列表名
        // 第二个参数是起始位下标,
        // 第三个是结束位下标(包含结束位元素)。
        // 负数代表倒数,-1代表倒数第一个;
        // 如果起始大于结束返回空,结束大于实际长度,返回至最后一个元素。$redis->lgetrange('list', 0, 2);// 获取列表指定区间的值,同上$redis->ltrim('list', 0, 3);   // 截取并保留列表指定区间的值,其余值删除。
        // 成功返回1,失败返回错误信息。负数代表倒数$redis->lsize('list');         // 获取列表的长度$redis->lget('list', 2)        // 获取列表指定位置的值$redis->lindex('list', 2);     // 获取列表指定位置的值

2-3 hash字典

一个string类型的field和value的映射表,特别适合用于存储对象。每个 hash 可以存储 2的32次方 - 1 键值对(40多亿)
hash表相当于 redis存储 key => value  中的key, 表内容相当于 value
方法中h代表hash操作
  1. 存储

    立即学习PHP免费学习笔记(深入)”;

    // $redis->hset('hash表', key, value);  
        // 如果hash表不存在,创建一个该hash表,如果不存在该key则设置成功,返回true,
        // 如果存在,则替换掉原来的值,返回false,失败返回false
        // 第一个参数是字典名
        $redis->hset('hashtest', 'a', 'aaa');   // 返回true
        $redis->hset('hashtest', 'a', 'bbb');  // 返回false,a的值改为bbb
        $redis->hset('hashtest', 'b', 'bbb');  // 返回true,增加b,值为bb$redis->hmset('hashtest', [1 => 1, 2 => 2, 3 => 3]);   // 批量赋值,       $redis->hincrby('hashtest', '1', 1);   // hash表中的key对应的值自增1(整数),
        // 第一个参数字典名
        // 第二个参数是key名,
        // 第三个参数是自增的幅度。如果表中不存在该key,则自动添加该key,并设置值为自增幅度$redis->hincrbyfloat('hashtest', '2', 1.5);        // hash表中key自增
  2. 获取

    $redis->hget('hash表', key);        // 获取某个key对应的值
        $redis->hget('hashtest', 'a'); // 获取hashtest中a的值$redis->hkeys('hashtest');     // 获取hash表中的所有的keys(键名),返回一个数组   $redis->hvals('hashtest'); // 获取hash表中的所有的values(值),顺序随机,返回一个数组$redis->hgetall('hashtest');   // 获取hash表中所有的键值对,顺序随机,返回一个数组$redis->hlen('hashtest');      // 获取hash表中key的数量   $redis->hmget('hashtest', [1, 2, 3]); // 批量获取多个key对应的value,第二个参数是keyArr
    
    $redis->hexists('hashtest', 'b');      // 判断hash表中是否存在该key
  3. 删除

    $redis->hdel('hashtest', 'a'); 
        // 删除hash表中的一个key,成功返回true,
        // 如果表不存在或key不存在返回false

2-4 set集合

Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
集合中最大的成员数为 2的32次方 - 1 (4294967295, 每个集合可存储40多亿个成员)。
方法中的s代表set操作
  1. 添加

    // $redis->sadd('set集合', '值'); // 往settest中加入一个值,成功,返回添加的个数,失败返回0。// 第一个参数是set集合名// 第二个参数是往该集合插入新值,即:往value中插入新值
        $redis->sadd('settest', 'a');  // 1
        $redis->sadd('settest', 'b');  // 1
        $redis->sadd('settest', 'a');  // 0$redis->sadd('settest', ['c', 'd', 'e']);  // 一次添加多个值
  2. 获取

    $redis->smembers('settest');   // 获取集合中所有的元素$redis->sismember('settest', 'b'); // 判断元素是否是set成员$redis->scard('settest');      // 查看集合中元素的数量$redis->sinter('settest', 'settest2'); // 返回两个集合的交集$redis->sinterstore('settest3', 'settest', 'settest2');    // 将settest和settest2的交集放到集合settest3中$redis->sunion('settest', 'settest2'); // 返回两个集合的并集$redis->sunionstore('settest4', 'settest', 'settest2');    // 将settest和settest2的并集放到集合settest4中$redis->sdiff('settest', 'settest2');  // 返回两个集合的差集$redis->sdiffstore('settest5', 'settest', 'settest2'); // 将settest和settest2的差集放到集合settest5中
  3. 删除

    $redis->srem('settest', 'a');  // 删除集合中的某个值,$redis->srem('settest', 'a', 'b'); // 删除多个值    $redis->spop('settest');       // 移除集合中一个随机的元素,并返回该元素

2-5. sorted set有序集合

Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
集合中最大的成员数为 2的32次方 - 1 (4294967295, 每个集合可存储40多亿个成员)。
方法中的z代表有序集合操作
  1. 添加或更新

    // $redis->zadd('有序集合名', 分数, 值);   // 向有序集合ztest中一个值,分数值可以是整数值或双精度浮点数。// 执行zadd时,如果不存在,则创建一个新的有序集合;// 如果ztest存在但不是有序集类型时,返回一个错误。
        $redis->zadd('ztest', 1, 'a'); 
        $redis->zadd('ztest', 2, 'a'); 
            // 当某元素存在时,更新这个元素的分数,并重新插入该元素,保证元素在正确的位置。
            // 但不算新添加的$redis->zadd('ztest', 分数1, 值1, 分数2, 值2);   // 向有序集合插入多个值
        $redis->zadd('ztest', 2, 'b', 3, 'c', 4, 'd'); 
    
    $redis->zincrby('set', 2, 'c');  // 指定的值 c 增加 2
  2. 获取

    // $redis->zrange('z集合', 起始位, 结束位, 布尔值); // 获取指定区间的有序集合。返回数组。分数从小到大。// 第一个参数: 有序集合名// 第二个参数:起始位置,// 第三个参数:结束位置(包含该位置),负数代表倒数第几个,// 第四个参数:可选参数,布尔值,是否带有分数,默认false
        $redis->zrange('ztest', 0, 1);     // ['a', 'b']   按分数排序,但是不带分数
        $redis->zrange('ztest', 0, 1, true);// ['a' => 2, 'b' => 2] 按分数排序,并且携带分数 ['元素' => '分数']$redis->zrevrange('zset', 1, 2);   // 获取指定区间的有序集合。返回数组。分数从大到小。$redis->zscore('ztest', 'a');  // 获取指定元素的分数$redis->zcard('zset');         // 获取存储元素的个数$redis->zcount('zset', 2, 5);  // 分数介于 2~5 的元素的个数$redis->zrangebyscore('zset', 2, 3);   // 返回分数介于 2~3 的元素,不带分数,显示方式同zrange$redis->zrangebyscore('zset', 2, 3, ['withscores' => true]); // 返回分数介于2~3的元素,并带分数显示,显示方式同zrange
  3. 删除

    $redis->zrem('zset', 'c');     // 删除指定成员$redis->zremrangebyscore('set', 2, 3);     // 移除分数介于2~3的元素,返回删除的个数

3. 其他常用方法

3-1 查找相关key

// 按条件查出对应的key(键),支持字符串拼接  (返回值是一个数组,即使没查出数据也会返回空数组)     // *代表任意字符任意长度, ?任意字符一个长度$redis->keys('A');  // 找出等于 A 的那个 键$redis->keys('a*');  // 找出以 a 开头,后面为任意值的 键,$redis->keys('*b*');  // 找出链接中间包含 b 的 键$redis->keys('c??');   // 找出长度为3,且第一个字符为c的 键$a = a;$redis->keys($a . '*');// 使用keys后可以使用for循环加 get() 来获取相关keys对应的值

3-2 过期时间

  1. 查看过期时间

    // $redis->ttl('key名');        // 查看某个key有效期的剩余时间,返回秒数。  // 当 无过期时间 时,返回:-1; // 当 无该key值 时,返回-2; 
        $redis->ttl('ttltest');    // 查看ttltest剩余过期时间
  2. 设置过期时间

    Redis::expire('key', second);  // 多少秒后过期Redis::expireAt('key', timeStemp);  // 到某一个 时间戳(秒) 的时候过期

相关推荐:

PHP如何使用redis消息队列发布微

PHP使用Redis实例详解

php使用Redis实现防止大并发下二次写入的方法

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

1884

2023.09.01

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

1242

2023.10.11

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

1137

2023.10.11

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

948

2023.10.23

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

1398

2023.10.23

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

1229

2023.11.03

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1439

2023.11.09

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1303

2023.11.13

excel制作动态图表教程
excel制作动态图表教程

本专题整合了excel制作动态图表相关教程,阅读专题下面的文章了解更多详细教程。

30

2025.12.29

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
进程与SOCKET
进程与SOCKET

共6课时 | 0.3万人学习

Redis+MySQL数据库面试教程
Redis+MySQL数据库面试教程

共72课时 | 6.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号