redis-3-hash

/ Database / 没有评论 / 45浏览

hash指令

键指令作用例子返回值序号
HDEL删除一个或多个哈希表字段HDEL KEY_NAME FIELD1.. FIELD被成功删除字段的数量,不包括被忽略的字段。0
HEXISTS查看哈希表 key 中,指定的字段是否存在HEXISTS KEY_NAME FIELD_NAME如果哈希表含有给定字段,返回 1 。 如果哈希表不含有给定字段,或 key 不存在,返回 01
HGET获取存储在哈希表中指定字段的值HGET KEY_NAME FIELD_NAME返回给定字段的值。如果给定的字段或 key 不存在时,返回 nil2
HGETALL获取在哈希表中指定 key 的所有字段和值HGETALL KEY_NAME以列表形式返回哈希表的字段及字段值。 若 key 不存在,返回空列表3
HINCRBYHINCRBY key field increment 为哈希表 key 中的指定字段的整数值加上增量 increment 。HINCRBY KEY_NAME FIELD_NAME INCR_BY_NUMBER执行 HINCRBY 命令之后,哈希表中字段的值4
HINCRBYFLOAT为哈希表 key 中的指定字段的浮点数值加上增量 increment 。HINCRBYFLOAT KEY_NAME FIELD_NAME increment执行 Hincrbyfloat 命令之后,哈希表中字段增加后的值5
HKEYS获取所有哈希表中的字段HKEYS KEY_NAME包含哈希表中所有域(field)列表。 当 key 不存在时,返回一个空列表。6
HLEN获取哈希表中字段的数量HLEN KEY_NAME哈希表中字段的数量。 当 key 不存在时,返回 07
HMGET获取所有给定字段的值HMGET KEY_NAME FIELD1...FIELD一个包含多个给定字段关联值的表,表值的排列顺序和指定字段的请求顺序一样8
HMSET同时将多个 field-value (域-值)对设置到哈希表 key 中MSET KEY_NAME FIELD1 VALUE1 ...FIELD VALUEN如果命令执行成功,返回 OK9
HSET将哈希表 key 中的字段 field 的值设为 valueHSET KEY_NAME FIELD VALUE如果字段是哈希表中的一个新建字段,并且值设置成功,返回 1 。 如果哈希表中域字段已经存在且旧值已被新值覆盖,返回 010
HSETNX只有在字段 field 不存在时,设置哈希表字段的值HSETNX KEY_NAME FIELD VALUE设置成功,返回 1 。 如果给定字段已经存在且没有操作被执行,返回 011
HVALS获取哈希表中所有值HVALS KEY_NAME一个包含哈希表中所有值的列表。 当 key 不存在时,返回一个空表12
HSCAN迭代哈希表中的键值对HSCAN KEY_NAME cursor [MATCH pattern] [COUNT count]返回的每个元素都是一个元组,每一个元组元素由一个字段(field) 和值(value)组成13

代码实践

HDEL

	RedisClient.HSet(ctx,"hash","username","aaaa","password","xsdsdsas","age","19")
	result, err := RedisClient.HDel(ctx, "hash", "age", "password").Result()
	if err != nil {
		logrus.Error(err)
	}
	logrus.Info(result) // 被成功删除的字段的数量

HEXISTS

	res,err := RedisClient.HExists(ctx,"hash","password").Result()
	if err != nil {
		logrus.Error(err)
	}
	logrus.Info(res) // false 已删除password字段

HGET

	res,err := RedisClient.HGet(ctx,"hash","username").Result()
	if err != nil {
		logrus.Error(err)
	}
	logrus.Info(res) // 如果字段不存在,报错,返回nil

HGETALL

	res,err := RedisClient.HGetAll(ctx,"hash").Result()
	if err != nil {
		logrus.Error(err)
	}
	logrus.Info(res) // 返回整个列表,如果key不存在,返回空列表

HINCRBY

	res,err := RedisClient.HIncrBy(ctx,"hash","age",2).Result()
	if err != nil {
		logrus.Error(err)
	}
	logrus.Info(res) // 该字段需要是整数型,即使该字段不存在,也可以增加

HINCRBYFLOAT

	res,err := RedisClient.HIncrByFloat(ctx,"hash","age",0.12).Result()
	if err != nil {
		logrus.Error(err)
	}
	logrus.Info(res) // 该字段需要是整数型或者是浮点数,即使该字段不存在,也可以相加

HKeys

	res,err := RedisClient.HKeys(ctx,"hash").Result()
	if err != nil{
		logrus.Error(err)
	}
	logrus.Info(res) // 当前hash key的所有字段,如果key不存在,则返回空数组

HLEN

	res,err := RedisClient.HLen(ctx,"hash").Result()
	if err != nil{
		logrus.Error(err)
	}
	logrus.Info(res) // key的所有字段的数量,如果key不存在,则返回0

HMGET

	res,err := RedisClient.HMGet(ctx,"hash","x","age").Result()
	if err != nil{
		logrus.Error(err)
	}
	logrus.Info(res) // 返回所有要求查询的字段,如果字段不存在,返回nil

HMSET

	res,err := RedisClient.HMSet(ctx,"hash","x","1","y","2").Result()
	if err != nil{
		logrus.Error(err)
	}
	logrus.Info(res) // 执行成功返回 true,否则false

HSET

	res,err := RedisClient.HSet(ctx,"hash","z","1","a","4").Result()
	if err != nil{
		logrus.Error(err)
	}
	logrus.Info(res) //如果字段是哈希表中的一个新建字段,并且值设置成功,返回1,如果哈希表中域字段已经存在且旧值已被新值覆盖,返回 0

HSETNX

	res,err := RedisClient.HSetNX(ctx,"hash","t","102").Result()
	if err != nil{
		logrus.Error(err)
	}
	logrus.Info(res) //设置成功,返回true,如果给定字段已经存在且没有操作被执行,返回 false,只有在字段 field 不存在时,返回true

HVALS

	res,err := RedisClient.HVals(ctx,"hash").Result()
	if err != nil{
		logrus.Error(err)
	}
	logrus.Info(res) // 返回hash表中所有的值列表

HSCAN

	res,Cursor, err := RedisClient.HScan(ctx,"bank", 0, "*B*", 8000).Result()
	if err != nil{
		logrus.Error(err)
	}
	logrus.Info(res) // 返回匹配的字段和值
	logrus.Warn(Cursor)