我们用的redis的散列其实就是一个hash散列:
储存多个域值对。一个散列由多个域值对组成,散列的域和值都是以字符串类型来存储的。同一个散列里面域是不能相同的,而域的值则没有这一要求,换句话说,不同域的值可以是重复的。通过命令,用户可以对散列执行设置域值对、获取域的值、检查域是否存在等操作,也可以让 Redis 返回散列包含的所有域、所有值或者所有域值对。
这是网上找的一个字符串类型与散列类型命令的一个比较,其他的相关命令可以去手册查看。
散列操作 | 字符串操作 |
---|---|
HSET | SET |
HGET | GET |
HSETNX | SETNX |
HDEL | DEL(删除一个键,不仅限于字符串键) |
HMSET | MSET |
HMGET | MGET |
HINCRBY | INCRBY |
HINCRBYFLOAT | INCRBYFLOAT |
HEXISTS | EXISTS(检查一个键是否存在,不仅限于字符串键) |
应用场景:
用的最多的就是用户信息的存储了,比如说有个user这样的键,下边可以存储hset user:1 value user:2 value这样来存储实际上也及时user:id 然后是value。他的下面的值也可以再分化比如说我们现在要存储一个博客文章类型的。我们就可以用散列类型来存储 hset post:id:title titlevalue hset post:id:content 还有作者啊发布文章日期的等等的。
这种的散列类型可以和mongo数据库的存储类型一样,mongo是以集合为单元,可以随意的增加一些键值没有关系型数据库那么多的调调框框,这样的散列类型更加的容易操作自己的数据类型,不用怕自己当初数据关系设计的不合理。