hash基本介绍
由field和关联的value组成的map键值对
field和value是字符串类型
一个hash中最多包含2^32-1键值对
设置单个字段
HSET key field value
HSETNX key field value
key的filed不存在的情况下执行,key不存在直接创建
设置多个字段
HMSET key field value [field value ...]
返回字段个数
HLEN key
判断字段是否存在
HEXISTS key field
key或者field不存在,返回0
返回字段值
HGET key field
返回多个字段值
HMGET key field [field ...]
返回所有的键值对
HGETALL key
返回所有字段名
HKEYS key
返回所有值
HVALS key
在字段对应的值上进行整数的增量计算
HINCRBY key field increment
在字段对应的值上进行浮点数的增量计算
HINCRBYFLOAT key field increment
删除指定的字段
HDEL key field [field ...]
举例
HINCRBY numbers x 100
HINCRBY numbers x -50
HINCRBYFLOAT numbers x 3.14
HDEL numbers x
hash用途
节约内存空间
每创建一个键,它都会为这个键储存一些附加的管理信息(比如这个键的类型,这个键最后一次被访问的时间等等)
所以数据库里面的键越多,redis数据库服务器在储存附加管理信息方面耗费的内存就越多,花在管理数据库键上的CPU也会越多在字段对应的值上进行浮点数的增量计算
不适合hash的情况
使用二进制位操作命令:因为Redis目前支持对字符串键进行SETBIT、GETBIT、BITOP等操作,如果你想使用这些操作,那么只能使用字符串键,虽然散列也能保存二进制数据
使用过期键功能:Redis的键过期功能目前只能对键进行过期操作,而不能对散列的字段进行过期操作,因此如果你要对键值对数据使用过期功能的话,那么只能把键值对储存在字符串里面
hash举例
微博的好友关注
用户ID为key,Field为好友ID,Value为关注时间
user:1000 user:606 20150808
用户维度统计
统计数包括:关注数、粉丝数、喜欢商品数、发帖数
用户为Key,不同维度为Field,Value为统计数
比如关注了5人
HSET user:100000 follow 5
HINCRBY user:100000 follow 1
原文:https://www.cnblogs.com/yuzhongwen/p/15305904.html