Redis Hash

当我们使用Redis作为缓存时,会存在一个问题:

当我们使用用户名作为用户缓存信息的Key,容易和Redis内其余数据重合,这中情况就需要使用Redis的Hash来解决:

什么是Redis Hash

Redis Hash是一个字符串类型的field(字段)和value(值)的映射表,适用于存储对象:

简单来说,Redis的整个Value就是键值对映射结构,通过key和field取得所需的值。
如我们需要储存用户数据,将数据都储存在key为”user“的缓存中,以用户名作为field,那么无论用户名是什么,都不会和其他数据冲突了:

redisTemplate.opsForHash().put("user", userDO.getUserName(), userDO);

其中第一个参数为key值,第二个为field值,第三个为数据。

当我们需要修改的时候,再次put()原来的field值就行

读取

使用:

UserDO userDO = (UserDO)redisTemplate.opsForHash().get("user", userName);

来进行读取操作,第一个参数为key,第二个为field

也可以根据key和一批field来批量查询:

List<String> userNames = new ArrayList<>();
userNames.add(userName);
List<UserDO> users = redisTemplate.opsForHash().multiGet("integralRankUser", userNames);

删除

redisTemplate.opsForHash().delete("integralRankUser", userName);

如果想要删除多个field,只需要传入多个field即可

redisTemplate.opsForHash().delete("integralRankUser", userName, "zhangsan", "lisi");