|
|
|
|
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
|
|
|
|
|
}
|
|
|
|
|
}
|