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