PHP使用Redis的Hash(哈希表)命令
1.Hash(哈希表)命令
命令 | 作用 | 返回值 |
---|---|---|
hDel | 删除哈希表key中一个或多个字段,传入不存在的字段将被忽略 | 返回成功删除的字段数 |
hExists | 判断哈希表key中是否存在给定的字段 | 存在true,不存在false |
hGet | 从哈希表key中获取给定的一个字段值 | 存在返回字段值,不存在返回false |
hGetAll | 从哈希表key中获取全部的字段和值 | 存在返回关联数组,不存在返回空数组 |
hIncrBy | 整形数值递增(有符号) | 递增后的值 |
hIncrByFloat | 浮点型数值递增(有符号) | 递增后的值 |
hKeys | 返回哈希表key中所有的字段 | 存在字段返回关联数组,不存在返回空数组 |
hLen | 返回哈希表key中字段数量 | 大于等于0的整数 |
hMGet | 返回哈希表key中给定的一个或多个字段的值 | 返回一个关联数租,键为查询的字段,值为查询到的值,查询的字段不存在则值为false |
hMSet | 对哈希表key设置一组字段值 | 如果命令成功,返回true |
hSet | 对哈希表key设置一个字段值 | 如果是设置了一个新值,返回1,如果覆盖了一个旧值,返回0 |
HSetnx | 在哈希表key中不存在给定字段的情况下赋值 | 成功返回1,如果已经存在则返回0 |
hVals | 返回哈希表key中所有的字段的值 | 关联数组 |
2.在Hash的key中设置一个或多个字段值
<?php /** * Created by PhpStorm. * User: jmsite.cn * Date: 2019/1/25 * Time: 18:33 */ try { $redis = new Redis(); $redis->connect('192.168.75.132', 6379); //设置多个字段值 $ret = $redis->hMSet('product_info_123', array( 'product_id' => 123, 'product_name' => 'Gregory登山包B75蓝色2015款', 'product_price' => 1700.00, 'product_sales_volume' => 10, 'product_stocks' => 20, )); var_dump($ret); //设置一个字段值 $ret = $redis->hSet('product_info_123', 'product_feature', '一款背负系统极佳的登山包'); var_dump($ret); } catch (Exception $e){ echo $e->getMessage(); }
执行结果
bool(true) int(1)
3.设置Hash的过期时间,并获取Hash的字段值
try { $redis = new Redis(); $redis->connect('192.168.75.132', 6379); //设置过期时间 $ret = $redis->ttl('product_info_123'); if ($ret === -1){ $ret = $redis->expire('product_info_123', 3600); var_dump($ret); } //获取产品名称 $ret = $redis->hGet('product_info_123', 'product_name'); var_dump($ret); //获取价格和销量 $ret = $redis->hMGet('product_info_123', array('product_price', 'product_sales_volume')); var_dump($ret); } catch (Exception $e){ echo $e->getMessage(); }
执行结果
bool(true) string(32) "Gregory登山包B75蓝色2015款" array(2) { ["product_price"]=> string(4) "1700" ["product_sales_volume"]=> string(2) "10" }
4.变价,增加销量,减库存,获取全部字段值
try { $redis = new Redis(); $redis->connect('192.168.75.132', 6379); //价格加15.99 $ret = $redis->hIncrByFloat('product_info_123', 'product_price', 15.99); var_dump($ret); //销量加1 $ret = $redis->hIncrBy('product_info_123', 'product_sales_volume', 1); var_dump($ret); //库存减1 $ret = $redis->hIncrBy('product_info_123', 'product_stocks', -1); var_dump($ret); //获取全部字段值 $ret = $redis->hGetAll('product_info_123'); var_dump($ret); } catch (Exception $e){ echo $e->getMessage(); }
执行结果
float(1715.99) int(11) int(19) array(6) { ["product_id"]=> string(3) "123" ["product_name"]=> string(32) "Gregory登山包B75蓝色2015款" ["product_price"]=> string(22) "1715.98999999999999999" ["product_sales_volume"]=> string(2) "11" ["product_stocks"]=> string(2) "19" ["product_feature"]=> string(36) "一款背负系统极佳的登山包" }
5.字段相关操作
try { $redis = new Redis(); $redis->connect('192.168.75.132', 6379); //判断字段product_feature和product_category是否存在 $ret = $redis->hExists('product_info_123', 'product_feature'); var_dump($ret); $ret = $redis->hExists('product_info_123', 'product_category'); var_dump($ret); //获取字段长度 $ret = $redis->hLen('product_info_123'); var_dump($ret); //获取全部字段 $ret = $redis->hKeys('product_info_123'); var_dump($ret); } catch (Exception $e){ echo $e->getMessage(); }
执行结果
bool(true) bool(false) int(6) array(6) { [0]=> string(10) "product_id" [1]=> string(12) "product_name" [2]=> string(13) "product_price" [3]=> string(20) "product_sales_volume" [4]=> string(14) "product_stocks" [5]=> string(15) "product_feature" }
6.删除字段,获取所有字段值
try { $redis = new Redis(); $redis->connect('192.168.75.132', 6379); //删除product_feature和product_stocks $ret = $redis->hDel('product_info_123', 'product_feature', 'product_stocks'); var_dump($ret); //获取所有字段值 $ret = $redis->hVals('product_info_123'); var_dump($ret); } catch (Exception $e){ echo $e->getMessage(); }
执行结果
int(2) array(4) { [0]=> string(3) "123" [1]=> string(32) "Gregory登山包B75蓝色2015款" [2]=> string(22) "1715.98999999999999999" [3]=> string(2) "11" }
注意:商品价格变价后出现1715.98999999999999999是因为php精度问题造成的,需要使用php的round方法截取
原文地址:https://www.jmsite.cn/blog-609.html
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
PHP使用Redis的Transaction(事务)命令
1.Transaction命令 命令 作用 返回值 watch 监视一个或多个key 总是OK multi 声明事务开始,后续命令将排队按顺序等待exec执行 总是OK exec 顺序执行multi之后的命令,如果multi之前使用watch命令监视的键的值发生变化,执行将失败 执行成功时返回数组包含每个命令执行结果,失败时原生命令返回null,php-redis扩展方法返回false discard 取消事务 总是OK unwatch 取消watch监视,如果watch监视之后执行了exec或discard,会自动取消监视,不必再unwatch 总是OK 2.执行事务 <?php /** * Created by PhpStorm. * User: jmsite.cn * Date: 2019/1/24 * Time: 21:03 */ try { $redis = new Redis(); $redis->connect('192.168.75.132', 6379); //开启事务 $redis->multi(); $redis->setex('keyTe...
- 下一篇
PHP使用Redis的List(列表)命令实现消息队列
1.用到的List(列表)命令 命令 作用 lPush 将一个或多个值插入到列表头部 rpoplpush 弹出列表最后一个值,同时插入到另一个列表头部,并返回该值 lRem 删除列表内的给定值 lIndex 按索引获取列表内的值 2.队列的组成 名称 职责 生产者 发布消息 消费者 获取并处理消息 监听者 监听超时的消息,弹回原消息队列,确保消费者挂掉后或处理失败后消息能被其他消费者处理 3.php实现代码 生产者Producter.php <?php /** * Created by PhpStorm. * User: jmsite.cn * Date: 2019/1/26 * Time: 0:13 */ try { //声明消息队列-list的键名 $queueKey = 'testQueueKey'; $redis = new Redis(); $redis->connect('192.168.75.132', 6379); //向列表中push10条消息 for ($i = 0;$i < 10;$i++){ //为消息生成唯一标识 $uniqid = uniq...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS6,CentOS7官方镜像安装Oracle11G
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8安装Docker,最新的服务器搭配容器使用