/// <summary> /// 按value倒序获取一个hash中的对象 /// </summary> /// <param name="client"></param> /// <param name="hashKey"></param> /// <param name="start">获取的第一个对象index(从1开始算,含)</param> /// <param name="stop">获取的最后一个对象index(从1开始算,含)</param> /// <returns></returns> public static Dictionary <string, string> GetDescendingValueFromHash(this IRedisClient client, string hashKey, int start, int stop) { var sha1 = client.GetSha1(get_descending_hash_start_stop_text); var result = client.ExecLuaShaAsList(sha1, hashKey, start.ToString(), stop.ToString()); var dic = new Dictionary <string, string>(result.Count / 2); for (var i = 0; i < result.Count; i += 2) { dic.Add(result[i], result[i + 1]); } return(dic); }
public static List <string> HashScan(this IRedisClient redis, string hashId, long cursor = 0, int pageSize = 500) { var sha1 = redis.GetSha1(RedisScanLua.HSCAN); return(redis.ExecLuaShaAsList(sha1, hashId, cursor.ToString(), pageSize.ToString())); }
/// <summary> /// 需要覆盖一个大Key时,请用本方法,注意需要定期清除gc:keys:* /// </summary> public static void RenameFast(this IRedisClient redis, string key, string newKey) { var sha1 = redis.GetSha1(Script.RenameFast); redis.ExecLuaShaAsList(sha1, key, newKey); }
/// <summary> /// 需要删除一个大Key时,请用本方法,注意需要定期清除gc:keys:* /// </summary> public static void RemoveKeyByRename(this IRedisClient redis, string key) { var sha1 = redis.GetSha1(Script.DeleteKeyByRename); redis.ExecLuaShaAsList(sha1, key); }
public static List <string> SearchKeysSafe(this IRedisClient redis, string pattern, long cursor = 0, int pageSize = 500) { var sha1 = redis.GetSha1(RedisScanLua.SCAN); return(redis.ExecLuaShaAsList(sha1, pattern, cursor.ToString(), pageSize.ToString())); }
public static List <string> GetSlowLog(this IRedisClient client) { var sha1 = client.GetSha1(slow_log_command_text); return(client.ExecLuaShaAsList(sha1)); }
/// <summary> /// 获取多个hash中的相同项的值 /// </summary> /// <param name="redis"></param> /// <param name="keyInHash">比如房间id</param> /// <param name="hashKeys">比如r:gift:exp,r:live:exp</param> /// <returns></returns> public static List <string> GetMiltiHashValueWithSameKey(this IRedisClient redis, string keyInHash, params string[] hashKeys) { var sha1 = redis.GetSha1(get_multi_hash_value_with_same_key); return(redis.ExecLuaShaAsList(sha1, hashKeys, new[] { keyInHash })); }