您的位置:首页 > 数据库 > Redis

Redis整理(4)之数据类型hash

2014-12-09 11:51 316 查看
除了散列类型,其他数据类型不支持嵌套
一个散列类型键只能包含2^32-1字段

散列类型适合存储对象:使用对象类别和ID构成键名,使用字段表示对象的属性,字段值存储属性值。
也就是说:同样的对象,各自却可以添加减少属性,有各自额外的特性。

例如一个NBA球员属性
NBAplayer:ID height rate
NBAplayer:ID height rate

比如上述类型球员都有着height rate属性
那么如果有个属性chinaaddress,这个表示在NBA打球的中国球员,是其他国家球员不具备的属性
放在关系数据库中,我们得额外开启一个字段,但是很明显中国球员很少,这个字段无疑是一个浪费!
那么可不可以大部分属性一致,然后特殊对象可以拥有自己独一无二的的属性且不造成表冗余?

同理:我可以将博客文章存储在散列中,article.title article.id article.time article.content
避免了牵一发动全身,只需要修改该散列中相应的字段值便可以完成局部字段更新,不必所有内容更新
可以:
redis支持散列 hash

hset key field value
hget key field
hmset key field value [field value...]
hget key field[field....]
hgetall key
hexists key field
hsetnx key field value //字段不存在时候赋值
hincrby key field incrment
hdel key field[field....] 删除键一个或者多个字段/属性
hlen key 获得键的字段/属性的个数
//只获取字段名或字段值
hkeys key
hvals key
<?php
$redis = new Redis();
$redis->connect('192.168.104.10',6379);
$first = 'nba:Tmac';//NBA本土球员 麦迪
$redis->hset($first,'height','203');
$redis->hset($first,'rate','43');
print_r($redis->hgetall($first));
echo "<hr>";

$first = 'nba:Yao';//姚明
$redis->hset($first,'height','203');
$redis->hset($first,'rate','43');
$redis->hset($first,'chinaAddress','上海');
print_r($redis->hgetall($first));
?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: