1.hash 数据类型是大key ,然后小key(fied),然后value

2.业务:商品详情添加缓存,缓存不能设置永久缓存,因为redis缓存是放在内存中的,给每个商品添加一个缓存,设置永不过期那么内存就会爆炸了,可以添加缓存然后设置过期时间就可以了。但是这样就不能使用hash这种数据类型了,因为hash是一个大key,下面各种小key,如下图所示,CONTENT_LIST是商品类型,也就是大key,与它并列可能有订单类型等等其他的分类,商品分类下面存了各种商品,商品id是小key。

java redis hash 过期 redis hash field 过期_java redis hash 过期

 

在这种业务场景下也就是需要设置某个商品过期(小key),而不是整个商品组缓存过期,但是redis没有只设置小key过期而大key不过期的api.只有设置大key过期,也就是设置整个商品分类都过期,所以不能使用hash数据类型。

现在就只能使用String类型,使用hash类型主要是为了方便存储分类,但是使用String类型就无法分类了,这时候可以给key值前缀以达到分类的目的,以商品id作为key(要加上前缀防止重复以及分类),value就是商品内容

key值使用:的话,在图形化界面中就会以文件夹形式展示,达到分类的效果

3.hash数据类型部分操作:

设置值:hset hash1 f1 aaa hash1(大key) f1(小key)

java redis hash 过期 redis hash field 过期_hash_02

 

看某个key是否存在hexists hash1 f1,返回1就是存在,0就是不存在

java redis hash 过期 redis hash field 过期_redis _03

代码:

 

java redis hash 过期 redis hash field 过期_缓存_04

查看某个大key下面所有的小key hkeys CART:1(CART:1是大key)

 

java redis hash 过期 redis hash field 过期_hash_05

查看某个大key下面所有的值 hvals CART:1

java redis hash 过期 redis hash field 过期_redis _06

既查key也查value (hgetall CART:1),一个key一个value

 

java redis hash 过期 redis hash field 过期_java redis hash 过期_07

 

hash1是大key,f1,f2,f3都是小key

 

java redis hash 过期 redis hash field 过期_缓存_08