using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using StackExchange;
using StackExchange.Redis;
namespace RedisStuy
{
///
/// Redis Database 操作
/// https://stackexchange.github.io/StackExchange.Redis/
///
public class RedisDatabaseStudy : IDisposable
{
private IDatabase redisDatabase;
public RedisDatabaseStudy()
{
redisDatabase = RedisHelper.GetRedisDatabase();
}
public void Dispose()
{
}
#region key 操作
///
/// 删除指定的key, 不存在则忽略
///
public bool KeyDelete(RedisKey key)
{
return redisDatabase.KeyDelete(key);
}
///
/// 删除指定的key, 不存在则忽略
///
public async Task KeyDeleteAsync(RedisKey key)
{
return await redisDatabase.KeyDeleteAsync(key);
}
///
/// 序列化指定的key,并返回被序列化的值。
///
public byte[] KeyDump(RedisKey key)
{
return redisDatabase.KeyDump(key);
}
///
/// 指定的key,是否存在
///
public bool KeyExists(RedisKey key)
{
return redisDatabase.KeyExists(key);
}
///
/// 为给定 key 设置生存时间
///
public bool KeyExpire(RedisKey key, TimeSpan? expire)
{
return redisDatabase.KeyExpire(key, expire);
}
///
/// 重命名key
///
public bool KeyRename(RedisKey sourceKey, RedisKey newKey)
{
return redisDatabase.KeyRename(key: sourceKey, newKey: newKey);
}
///
/// 迁移key到另外数据库
///
/// key
/// 目标服务器
/// 目标数据库
/// 操作超时豪秒数
/// 迁移选项
/// 命令标记
public void KeyMigrate(RedisKey key, System.Net.EndPoint toServer, int toDatabase = 0, int timeoutMilliseconds = 0, MigrateOptions migrateOptions = MigrateOptions.None, CommandFlags flags = CommandFlags.None)
{
redisDatabase.KeyMigrate(key, toServer, toDatabase, timeoutMilliseconds, migrateOptions, flags);
}
///
/// 移动key到同服务器的另一个数据库
///
public bool KeyMove(RedisKey key, int databaseIndex)
{
return redisDatabase.KeyMove(key, databaseIndex);
}
///
/// 删除键所指定的过期时间
///
public bool KeyPersist(RedisKey key)
{
return redisDatabase.KeyPersist(key);
}
///
/// 从当前数据库中随机返回一个key
///
public RedisKey KeyRandom()
{
return redisDatabase.KeyRandom();
}
///
/// 反序列化给定的序列化值,并将它和给定的 key 关联
///
/// 以毫秒为单位为 key 设置生存时间;为null,不设置生存时间
///
/// 是否执行成功
///
public bool KeyRestore(RedisKey key, byte[] value,TimeSpan? expiry,CommandFlags flags)
{
bool isSucess = false;
try
{
redisDatabase.KeyRestore(key, value, expiry, flags);
isSucess = true;
}
catch
{
isSucess = false;
}
return isSucess;
}
///
/// 获取具有超时的键的剩余生存时间
///
public TimeSpan? KeyTimeToLive(RedisKey key)
{
return redisDatabase.KeyTimeToLive(key);
}
///
/// 获取指定key的数据类型
///
public RedisType KeyType(RedisKey key)
{
var redisType = redisDatabase.KeyType(key);
return redisType;
}
#endregion
}
}