You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

168 lines
5.7 KiB
C#

6 years ago
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using StackExchange.Redis;
namespace RedisStuy
{
/// <summary>
/// 字符串操作学习
/// http://www.redis.cn
/// http://www.redis.net.cn/order/
/// </summary>
public class RedisStringStudy
{
#region 初始化
private IDatabase redisDatabase;
public RedisStringStudy()
{
redisDatabase = RedisHelper.GetRedisDatabase();
}
#endregion
#region 设置键值
/// <summary>
/// 设置指定key的值
/// 如果Key已经存在管是做么类型将被重写为指定的String值。
/// </summary>
public bool StringSet(RedisKey key, RedisValue value, TimeSpan? expiry, When when = When.Always, CommandFlags flags = CommandFlags.None)
{
return redisDatabase.StringSet(key, value, expiry, when, flags);
}
/// <summary>
/// 设置多组key value 的值
/// </summary>
public bool StringSet(KeyValuePair<RedisKey, RedisValue>[] values, When when = When.Always, CommandFlags flags = CommandFlags.None)
{
return redisDatabase.StringSet(values, when, flags);
}
/// <summary>
/// 将给定 key 的值设为value,并返回 key 的旧值
/// </summary>
/// <returns> key 的旧值</returns>
public RedisValue StringGetSet(RedisKey key, RedisValue value, CommandFlags flags = CommandFlags.None)
{
return redisDatabase.StringGetSet(key, value, flags);
}
#endregion
#region 修改键值
/// <summary>
/// 用指定的字符串覆盖给定 key 所储存的字符串值,覆盖的位置从偏移量 offset 开始
/// </summary>
/// <returns>被修改后的字符串长度</returns>
public RedisValue StringSetRange(RedisKey key, long offset, RedisValue value, CommandFlags flags = CommandFlags.None)
{
return redisDatabase.StringSetRange(key, offset,value, flags);
}
/// <summary>
/// 指定内容追加内容
/// 如果 key 已经存在并且是一个字符串,将 value 追加到 key 原来的值的末尾。
/// 如果 key 不存在, APPEND 就简单地将给定 key 设为 value ,就像执行 SET key value 一样。
/// </summary>
/// <returns>
/// 追加 value 之后, key 中字符串的长度。
/// </returns>
public long StringAppend(RedisKey key, RedisValue value, CommandFlags flags=CommandFlags.None)
{
return redisDatabase.StringAppend(key, value, flags);
}
/// <summary>
/// 增加key中储存数字的整数值
/// </summary>
public long StringIncrement(RedisKey key, long value = 1, CommandFlags flags = CommandFlags.None)
{
return redisDatabase.StringIncrement(key, value, flags);
}
/// <summary>
/// 增加key中储存数字的浮点值
/// </summary>
public double StringIncrement(RedisKey key, double value = 1, CommandFlags flags = CommandFlags.None)
{
return redisDatabase.StringIncrement(key, value, flags);
}
/// <summary>
/// 减少key中储存数字的整数值
/// </summary>
/// <returns>
/// 执行 DECR 命令之后 key 的值
/// </returns>
public long StringDecrement(RedisKey key, long value, CommandFlags flags = CommandFlags.None)
{
return redisDatabase.StringDecrement(key, value, flags);
}
/// <summary>
/// 减少key中储存数字的浮点数值
/// </summary>
/// <returns>
/// 执行 DECR 命令之后 key 的值
/// </returns>
public double StringDecrement(RedisKey key, double value, CommandFlags flags = CommandFlags.None)
{
return redisDatabase.StringDecrement(key, value, flags);
}
#endregion
#region 读取键值
/// <summary>
/// 获取指定键的值
/// </summary>
public RedisValue StringGet(RedisKey key, CommandFlags flags = CommandFlags.None)
{
return redisDatabase.StringGet(key, flags);
}
/// <summary>
/// 获取指定一组键的一组值
/// </summary>
public RedisValue[] StringGet(RedisKey[] keys, CommandFlags flags = CommandFlags.None)
{
return redisDatabase.StringGet(keys, flags);
}
/// <summary>
/// 获取 Key 的值,并带有生存时间信息
/// 如果 Key 不存在则返回特殊值nil。
/// 如果 key 的值不是字符串则返回一个错误因为GET只处理字符串值。
/// </summary>
public RedisValueWithExpiry StringGetWithExpiry(RedisKey key, CommandFlags flags = CommandFlags.None)
{
return redisDatabase.StringGetWithExpiry(key, flags);
}
/// <summary>
/// 返回 key 中字符串值的子字符
/// </summary>
public RedisValue StringGetRange(RedisKey key, long start, long end, CommandFlags flags=CommandFlags.None)
{
return redisDatabase.StringGetRange(key, start, end, flags);
}
/// <summary>
/// 获取 key 所储存的字符串值的长度
/// </summary>
public long StringLength(RedisKey key, CommandFlags flags=CommandFlags.None)
{
return redisDatabase.StringLength(key, flags);
}
#endregion`
#region 二进制一些操作,省略
#endregion
}
}