若是使用redis的頻次較高,那麼業務中常常會出現須要根據關鍵字進行批量查詢,因此總結一下StackExchange中使用批量查詢的方法(若是數據量很大,那麼在redis中模糊查詢很耗時,請慎用!)html
初始化redis鏈接對象:redis
string _connectionString = ConfigurationManager.ConnectionStrings["RedisConnectionString"].ConnectionString; ConnectionMultiplexer _connMultiplexer = ConnectionMultiplexer.Connect(_connectionString); IDataBase _db = _connMultiplexer.GetDatabase(db);
經過 keys或scan查找出匹配的key,StackExchange.Redis 中調用 keys/scan/size/flush/save/集羣 等命令須使用 IServer 對象服務器
var _server = _connMultiplexer.GetServer(_connMultiplexer.GetEndPoints()[0]); //默認一個服務器 var pattern = "keyword*"; var keys = _server.Keys(database: _db.Database, pattern: pattern); //StackExchange.Redis 會根據redis版本決定用keys仍是 scan(>2.8) return _db.KeyDelete(keys.ToArray()); //刪除一組key
若是數據量很大(好比幾十萬個key),爲了提升效率,能夠經過Lua腳本進行模糊查詢的批量操做lua
var pattern = "keyword*"; var redisResult = _db.ScriptEvaluateAsync(LuaScript.Prepare( //Redis的keys模糊查詢: " local res = redis.call(‘KEYS‘, @keypattern) " + " return res "), new { @keypattern = pattern }); if (!redisResult.IsNull) { _db.KeyDelete((string[])redisResult); //刪除一組key }