@Autowired
private StringRedisTemplate stringRedisTemplate;
@Test
public void testHash() {
stringRedisTemplate.delete("testHash");
//hmset key field1 value1 field2 value2...
//用于同时将多个 field-value (字段-值)对设置到哈希表中,此命令会覆盖哈希表中已存在的字段
//如果哈希表不存在,会创建一个空哈希表,并执行 HMSET 操作
Map<String, String> map = new HashMap<>();
map.put("hashChild1", LocalDateTime.now().toString());
map.put("hashChild2", LocalDateTime.now().toString());
stringRedisTemplate.opsForHash().putAll("testHash", map);
System.out.println("\thmset key field1 value1 field2 value2...:void");
System.out.println(stringRedisTemplate.opsForHash().entries("testHash"));
//hset ket field value
//用于为哈希表中的字段赋值
//如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作
//如果字段已经存在于哈希表中,旧值将被覆盖
stringRedisTemplate.opsForHash().put("testHash", "hashChild3", LocalDateTime.now().toString());
System.out.println("\thset ket field value:void");
System.out.println(stringRedisTemplate.opsForHash().entries("testHash"));
//hexists key field
//用于查看哈希表的指定字段是否存在
Boolean hexistsResult = stringRedisTemplate.opsForHash().hasKey("testHash", "hashChild1");
System.out.println("\thexists key field:" + hexistsResult);
System.out.println(stringRedisTemplate.opsForHash().entries("testHash"));
//hgetall key
//用于返回哈希表中,所有的字段和值
Map<Object, Object> hgetallResult = stringRedisTemplate.opsForHash().entries("testHash");
System.out.println("\thgetall key:" + hgetallResult);
System.out.println(stringRedisTemplate.opsForHash().entries("testHash"));
//hvals key
//返回哈希表所有的值
List<Object> hvalsResult = stringRedisTemplate.opsForHash().values("testHash");
System.out.println("\thvals key:" + hvalsResult);
System.out.println(stringRedisTemplate.opsForHash().entries("testHash"));
//hkeys key
//用于获取哈希表中的所有域(field
Set<Object> hkeysResult = stringRedisTemplate.opsForHash().keys("testHash");
System.out.println("\thkeys key:" + hkeysResult);
System.out.println(stringRedisTemplate.opsForHash().entries("testHash"));
//hmget key field1 field2...
//用于返回哈希表中,一个或多个给定字段的值
//如果指定的字段不存在于哈希表,那么返回一个 nil 值
List<Object> list = Arrays.asList("hashChild1", "hashChild2");
List<Object> hmgetResult = stringRedisTemplate.opsForHash().multiGet("testHash", list);
System.out.println("\thmget key field1 field2...:" + hmgetResult);
System.out.println(stringRedisTemplate.opsForHash().entries("testHash"));
//hsetnx key field value
//用于为哈希表中不存在的的字段赋值
//如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作
//如果字段已经存在于哈希表中,操作无效
//如果 key 不存在,一个新哈希表被创建并执行 HSETNX 命令
Boolean hsetnxResult = stringRedisTemplate.opsForHash().putIfAbsent("testHash", "hashChild4", LocalDateTime.now().toString());
System.out.println("\thsetnx key field value:" + hsetnxResult);
System.out.println(stringRedisTemplate.opsForHash().entries("testHash"));
//hdel key field1 field2 ...
//用于删除哈希表 key 中的一个或多个指定字段,不存在的字段将被忽略
Long hdelResult = stringRedisTemplate.opsForHash().delete("testHash", "hashChild1", "hashChild2");
System.out.println("\thdel key field1 field2 ...:" + hdelResult);
System.out.println(stringRedisTemplate.opsForHash().entries("testHash"));
//hget key field
//用于返回哈希表中指定字段的值
Object hgetResult = stringRedisTemplate.opsForHash().get("testHash", "hashChild3");
System.out.println("\thget key field:" + hgetResult);
System.out.println(stringRedisTemplate.opsForHash().entries("testHash"));
}
StringRedisTemplate方法和Redis语法对应关系(Hash)
最新推荐文章于 2025-04-13 11:55:32 发布