using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using RedisStudyModel; using StackExchange.Redis; namespace RedisStuy { /// /// Redis Hash 学习 /// /// /// http://www.redis.net.cn /// public class RedisHashStudy { #region 初始化 private IDatabase redisDatabase = RedisHelper.GetRedisDatabase(); #endregion /// /// 整数减少hash中,指定列的值 /// key不存在,则创建一个持有哈希的新密钥。 /// hashField字段不存在或持有不能被解释为整数的字符串,则在执行前将该值设置为0 /// public long HashDecrement(RedisKey key, RedisValue hashField, long value=1, CommandFlags flags=CommandFlags.None) { return redisDatabase.HashDecrement(key, hashField, value, flags); } /// /// 浮点数减少hash中,指定列的值 /// key不存在,则创建一个持有哈希的新密钥。 /// hashField字段不存在或持有不能被解释为整数的字符串,则在执行前将该值设置为0 /// public double HashDecrement(RedisKey key, RedisValue hashField, double value = 1, CommandFlags flags = CommandFlags.None) { return redisDatabase.HashDecrement(key, hashField, value, flags); } /// /// 删除哈希表中指定字段,不存在的字段将被忽略 /// public bool HashDelete(RedisKey key, RedisValue hashField, CommandFlags flags=CommandFlags.None) { return redisDatabase.HashDelete(key, hashField, flags); } /// /// 删除哈希表中多个指定字段,不存在的字段将被忽略 /// public long HashDelete(RedisKey key, RedisValue[] hashFields, CommandFlags flags = CommandFlags.None) { return redisDatabase.HashDelete(key, hashFields, flags); } /// /// 哈希表中指定字段是否存在 /// public bool HashExists(RedisKey key, RedisValue hashField, CommandFlags flags = CommandFlags.None) { return redisDatabase.HashExists(key, hashField, flags); } /// /// 获取哈希表中指定字段的值 /// public RedisValue HashGet(RedisKey key, RedisValue hashField, CommandFlags flags = CommandFlags.None) { return redisDatabase.HashGet(key, hashField, flags); } /// /// 获取哈希表中一组字段的一组值 /// public RedisValue[] HashGet(RedisKey key, RedisValue[] hashFields, CommandFlags flags = CommandFlags.None) { return redisDatabase.HashGet(key, hashFields, flags); } /// /// 获取哈希表所有字段 /// public HashEntry[] HashGetAll(RedisKey key, CommandFlags flags = CommandFlags.None) { return redisDatabase.HashGetAll(key, flags); } /// /// 整数增加hash中,指定列的值 /// key不存在,则创建一个持有哈希的新密钥。 /// hashField字段不存在或持有不能被解释为整数的字符串,则在执行前将该值设置为0 /// public long HashIncrement(RedisKey key, RedisValue hashField, long value = 1, CommandFlags flags = CommandFlags.None) { return redisDatabase.HashIncrement(key, hashField, value, flags); } /// /// 浮点数增加hash中,指定列的值 /// key不存在,则创建一个持有哈希的新密钥。 /// hashField字段不存在或持有不能被解释为整数的字符串,则在执行前将该值设置为0 /// public double HashIncrement(RedisKey key, RedisValue hashField, double value = 1, CommandFlags flags = CommandFlags.None) { return redisDatabase.HashIncrement(key, hashField, value, flags); } /// /// 获取哈希表中所有的字段 /// public RedisValue[] HashKeys(RedisKey key, CommandFlags flags=CommandFlags.None) { return redisDatabase.HashKeys(key, flags); } /// /// 获取哈希表中字段的数量 /// public long HashLength(RedisKey key, CommandFlags flags = CommandFlags.None) { return redisDatabase.HashLength(key, flags); } /// /// 获取哈希表中所有字段的值 /// public RedisValue[] HashValues(RedisKey key, CommandFlags flags = CommandFlags.None) { return redisDatabase.HashValues(key, flags); } /// /// 为哈希表中的字段赋值 /// 如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。 /// 如果字段已经存在于哈希表中,旧值将被覆盖。 /// public bool HashSet(RedisKey key, RedisValue hashField, RedisValue value, When when = When.Always, CommandFlags flags = CommandFlags.None) { return redisDatabase.HashSet(key, hashField, value, when, flags); } /// /// 同时将多个 field-value (字段-值)对设置到哈希表中。 /// 此命令会覆盖哈希表中已存在的字段。 /// 如果哈希表不存在,会创建一个空哈希表,并执行 HMSET 操作。 /// public bool HashSet(RedisKey key, HashEntry[] hashFields, CommandFlags flags = CommandFlags.None) { if (string.IsNullOrEmpty(key)) { throw new ArgumentNullException("key", "参数 key, 不能为null值或空串"); } if (hashFields == null) { throw new ArgumentNullException("hashFields", "参数 hashFields, 不能为null值"); } if (hashFields.Length <= 0) { throw new ArgumentNullException("hashFields", "参数hashFields.Length "); } redisDatabase.HashSet(key, hashFields, flags); bool result = false; try { result = true; } catch (ArgumentNullException argumentNullException) { throw argumentNullException; } catch (Exception baseException) { throw baseException; } return result; } /// /// HSCAN命令用于对哈希进行增量迭代 /// public IEnumerable HashScan(RedisKey key, RedisValue pattern, int pageSize, CommandFlags flags) { return redisDatabase.HashScan(key, pattern, pageSize, flags); } /// /// HSCAN命令用于对哈希进行增量迭代; /// 注意:通过光标恢复迭代,将原始枚举或枚举器转换为ISCANIN光标。 /// public IEnumerable HashScan(RedisKey key, RedisValue pattern = default(RedisValue), int pageSize = 10, long cursor = 0, int pageOffset = 0, CommandFlags flags = CommandFlags.None) { return redisDatabase.HashScan(key, pattern, pageSize,cursor,pageOffset, flags); } } }