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");