using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using StackExchange.Redis; namespace RedisStuy { /// /// 链表学习 /// http://www.redis.cn /// http://www.redis.net.cn/order/ /// public class RedisListStudy { #region 初始化 private IDatabase redisDatabase; public RedisListStudy() { redisDatabase = RedisHelper.GetRedisDatabase(); } #endregion /// /// 在列表的元素前(左)插入元素 /// /// /// 命令执行成功,返回插入操作完成之后,列表的长度 /// 没有找到指定元素 ,返回 -1 /// key 不存在或为空列表,返回 0 /// public long ListLeftPush(RedisKey key, RedisValue value, When when = When.Always, CommandFlags flags = CommandFlags.None) { return redisDatabase.ListLeftPush(key, value, when, flags); } /// /// 在列表的元素前(左)插入一组元素 /// /// /// 命令执行成功,返回插入操作完成之后,列表的长度 /// 没有找到指定元素 ,返回 -1 /// key 不存在或为空列表,返回 0 /// public long ListLeftPushs(RedisKey key, RedisValue[] values, CommandFlags flags = CommandFlags.None) { return redisDatabase.ListLeftPush(key, values, flags); } /// /// 在列表的元素后(右)插入元素 /// /// /// 命令执行成功,返回插入操作完成之后,列表的长度 /// 没有找到指定元素 ,返回 -1 /// key 不存在或为空列表,返回 0 /// public long ListRightPush(RedisKey key, RedisValue value, When when = When.Always, CommandFlags flags = CommandFlags.None) { return redisDatabase.ListRightPush(key, value, when, flags); } /// /// 在列表的元素后面(右侧)插入一组元素 /// /// /// 命令执行成功,返回插入操作完成之后,列表的长度 /// 没有找到指定元素 ,返回 -1 /// key 不存在或为空列表,返回 0 /// public long ListRightPush(RedisKey key, RedisValue[] values, CommandFlags flags = CommandFlags.None) { return redisDatabase.ListRightPush(key, values, flags); } /// /// 在列表中指定元素后插入元素 /// 指定key不存在,不执行任何操作 /// /// /// 插入后,列表长度 /// 未找到指定key值时,返回 -1 /// public long ListInsertAfter(RedisKey key, RedisValue pivot, RedisValue value, CommandFlags flags = CommandFlags.None) { return redisDatabase.ListInsertAfter(key, pivot, value, flags); } /// /// 在列表中指定元素前插入元素 /// 指定key不存在,不执行任何操作 /// /// /// 插入后,列表长度 /// 未找到指定参照值时,返回 -1 /// public long ListInsertBefore(RedisKey key, RedisValue pivot, RedisValue value, CommandFlags flags = CommandFlags.None) { return redisDatabase.ListInsertBefore(key, pivot, value, flags); } /// /// 移出并获取列表的第一个元素 /// /// /// 列表的第一个元素 /// 当列表 key 不存在时,返回 nil /// public RedisValue ListLeftPop(RedisKey key, CommandFlags flags = CommandFlags.None) { return redisDatabase.ListLeftPop(key, flags); } /// /// 移除并返回列表的最后一个元素 /// /// /// 列表的最后一个元素 /// 当列表不存在时,返回 nil /// public RedisValue ListRightPop(RedisKey key, CommandFlags flags = CommandFlags.None) { return redisDatabase.ListRightPop(key, flags); } /// /// 获取列表长度 /// /// /// 列表的长度 /// 不存在时返回0 /// public long ListLength(RedisKey key, CommandFlags flags = CommandFlags.None) { return redisDatabase.ListLength(key, flags); } /// /// 获取列表指定范围内的元素 /// 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。 /// 负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推 /// /// /// 指定区间内元素列表 /// public RedisValue[] ListRange(RedisKey key, long start = 0, long stop = -1, CommandFlags flags = CommandFlags.None) { return redisDatabase.ListRange(key, start, stop, flags); } /// /// 移除列表中与值相等的元素 /// count > 0:从 头到尾 的移除值相等的元素 /// count < 0:从 尾到头 的移除值相等的元素 /// count =0:移除所有与值相等的元素 /// /// /// public long ListRemove(RedisKey key, RedisValue value, long count = 0, CommandFlags flags = CommandFlags.None) { return redisDatabase.ListRemove(key, value, count, flags); } /// /// 通过索引获取列表中的元素 /// public RedisValue ListGetByIndex(RedisKey key, long index, CommandFlags flags=CommandFlags.None) { return redisDatabase.ListGetByIndex(key, index, flags); } /// /// 原子的,返回并移除源列表的最后一个元素(尾部),并将元素存储在目标列表的第一个元素(头)中 /// (原子的,把一个列表尾部的元素移动到另一个列表的头部) /// public RedisValue ListRightPopLeftPush(RedisKey source, RedisKey destination, CommandFlags flags = CommandFlags.None) { return redisDatabase.ListRightPopLeftPush(source, destination, flags); } /// /// 设置列表中指定索引的元素的值 /// public void ListSetByIndex(RedisKey key, long index, RedisValue value, CommandFlags flags = CommandFlags.None) { redisDatabase.ListSetByIndex(key, index, value, flags); } /// /// 修剪(trim)列表 /// 让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。 /// public void ListTrim(RedisKey key, long start, long stop, CommandFlags flags = CommandFlags.None) { redisDatabase.ListTrim(key, start, stop, flags); } } }