StackExchange.Redis的清理所有KEY, 附上封装好的cs类

技术文摘 8个月前 8KMM
4.4K 0 0

要删除所有内容,涉及到Redis的FLUSHDB或FLUSHALL redis命令;两者都在StackExchange.Redis中可用;

server.FlushDatabase(); // to wipe a single database, 0 by default
server.FlushAllDatabases(); // to wipe all databases

常见报错信息:

  1. This operation is not available unless admin mode is enabled: KEYS
  2. This operation is not available unless admin mode is enabled: FLUSHDB

提示需要管理员模式,需要使用allowAdmin=true连接到redis, 获得此类选项的一种方法是将AllowAdmin分配给已解析的字符串:

var options = ConfigurationOptions.Parse("server:6379");
options.AllowAdmin = true;
var redis = ConnectionMultiplexer.Connect(options);

//然后刷新所有库。

var endpoints = redis.GetEndPoints();
var server = redis.GetServer(endpoints[0]);
server.FlushAllDatabases();

也可以不修改连接字符串。 直接遍历所有key, 进行移除。

        /// <summary>
        /// 清理所有Redis缓存
        /// </summary>
        public string ClearRedisAll()
        {
            try
            {
                var my = GetManager(this._ConnectionString);
                var endpoints = my.GetEndPoints(true);

                foreach (var endpoint in endpoints)
                {
                    var server = my.GetServer(endpoint);

                    var keys = server.Keys();
                    foreach (var key in keys)
                    {
                        var db = this.GetDb();
                        db.KeyDelete(key);
                    }

                    //server.FlushAllDatabases();
                }
                return "ok";
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
        }

C#版的StackExchange.Redis的各种操作,已经封装好了类, 大家可以下载。

本地下载:StackRedis.cs

调用示例1~2:

var result = _redis.SetOrUpdateHashsField<int>("key_" + id, "CUserLog", Count + 1); //设置和更新Redis对象,Int型


var list = _redis.GetHashField<List<vw_CoProduct>>("key_" + id, "CoProduct"); //获取Redis。

//当没有缓存时。从数据库中获取。
 if (list == null || list.Count() == 0) 
{
list=Product_bll.GetCProductList(whereStr); //从数据库中获取新值
 var result = _redis.SetOrUpdateHashsField<List<vw_CoProduct>>("key_" + id, "CoProduct", list); //设置和更新Redis对象,List列表
}

 

 

 

版权声明:8KMM 发表于 2022年1月22日 18:13。
转载请注明:StackExchange.Redis的清理所有KEY, 附上封装好的cs类 | 八千网址导航

相关文章

暂无评论

暂无评论...