要删除所有内容,涉及到Redis的FLUSHDB或FLUSHALL redis命令;两者都在StackExchange.Redis中可用;
server.FlushDatabase(); // to wipe a single database, 0 by default
server.FlushAllDatabases(); // to wipe all databases
常见报错信息:
- This operation is not available unless admin mode is enabled: KEYS
- 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列表 }
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...