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 学习
///
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 void HashSet(RedisKey key, HashEntry[] hashFields, CommandFlags flags = CommandFlags.None)
{
redisDatabase.HashSet(key, hashFields, flags);
}
///
/// 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);
}
}
}