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