15
15
using System . Collections . Generic ;
16
16
using System . Linq ;
17
17
using System . Text ;
18
+ using System . Threading ;
18
19
using ServiceStack . Redis . Generic ;
19
20
using ServiceStack . Redis . Pipeline ;
20
21
using ServiceStack . Text ;
@@ -974,73 +975,101 @@ public void RemoveByRegex(string pattern)
974
975
975
976
public IEnumerable < string > ScanAllKeys ( string pattern = null , int pageSize = 1000 )
976
977
{
977
- var ret = new ScanResult ( ) ;
978
- while ( true )
978
+ try
979
979
{
980
- ret = pattern != null
981
- ? base . Scan ( ret . Cursor , pageSize , match : pattern )
982
- : base . Scan ( ret . Cursor , pageSize ) ;
983
-
984
- foreach ( var key in ret . Results )
980
+ var ret = CreateScanResult ( ) ;
981
+ while ( true )
985
982
{
986
- yield return key . FromUtf8Bytes ( ) ;
987
- }
983
+ ret = pattern != null
984
+ ? base . Scan ( ret . Cursor , pageSize , match : pattern )
985
+ : base . Scan ( ret . Cursor , pageSize ) ;
986
+
987
+ foreach ( var key in ret . Results )
988
+ {
989
+ yield return key . FromUtf8Bytes ( ) ;
990
+ }
988
991
989
- if ( ret . Cursor == 0 ) break ;
992
+ if ( ret . Cursor == 0 ) break ;
993
+ }
994
+ }
995
+ finally
996
+ {
997
+ EndScanResult ( ) ;
990
998
}
991
999
}
992
1000
993
1001
public IEnumerable < string > ScanAllSetItems ( string setId , string pattern = null , int pageSize = 1000 )
994
1002
{
995
- var ret = new ScanResult ( ) ;
996
- while ( true )
1003
+ try
997
1004
{
998
- ret = pattern != null
999
- ? base . SScan ( setId , ret . Cursor , pageSize , match : pattern )
1000
- : base . SScan ( setId , ret . Cursor , pageSize ) ;
1001
-
1002
- foreach ( var key in ret . Results )
1005
+ var ret = CreateScanResult ( ) ;
1006
+ while ( true )
1003
1007
{
1004
- yield return key . FromUtf8Bytes ( ) ;
1005
- }
1008
+ ret = pattern != null
1009
+ ? base . SScan ( setId , ret . Cursor , pageSize , match : pattern )
1010
+ : base . SScan ( setId , ret . Cursor , pageSize ) ;
1006
1011
1007
- if ( ret . Cursor == 0 ) break ;
1012
+ foreach ( var key in ret . Results )
1013
+ {
1014
+ yield return key . FromUtf8Bytes ( ) ;
1015
+ }
1016
+
1017
+ if ( ret . Cursor == 0 ) break ;
1018
+ }
1019
+ }
1020
+ finally
1021
+ {
1022
+ EndScanResult ( ) ;
1008
1023
}
1009
1024
}
1010
1025
1011
1026
public IEnumerable < KeyValuePair < string , double > > ScanAllSortedSetItems ( string setId , string pattern = null , int pageSize = 1000 )
1012
1027
{
1013
- var ret = new ScanResult ( ) ;
1014
- while ( true )
1028
+ try
1015
1029
{
1016
- ret = pattern != null
1017
- ? base . ZScan ( setId , ret . Cursor , pageSize , match : pattern )
1018
- : base . ZScan ( setId , ret . Cursor , pageSize ) ;
1019
-
1020
- foreach ( var entry in ret . AsItemsWithScores ( ) )
1030
+ var ret = CreateScanResult ( ) ;
1031
+ while ( true )
1021
1032
{
1022
- yield return entry ;
1023
- }
1033
+ ret = pattern != null
1034
+ ? base . ZScan ( setId , ret . Cursor , pageSize , match : pattern )
1035
+ : base . ZScan ( setId , ret . Cursor , pageSize ) ;
1024
1036
1025
- if ( ret . Cursor == 0 ) break ;
1037
+ foreach ( var entry in ret . AsItemsWithScores ( ) )
1038
+ {
1039
+ yield return entry ;
1040
+ }
1041
+
1042
+ if ( ret . Cursor == 0 ) break ;
1043
+ }
1044
+ }
1045
+ finally
1046
+ {
1047
+ EndScanResult ( ) ;
1026
1048
}
1027
1049
}
1028
1050
1029
1051
public IEnumerable < KeyValuePair < string , string > > ScanAllHashEntries ( string hashId , string pattern = null , int pageSize = 1000 )
1030
1052
{
1031
- var ret = new ScanResult ( ) ;
1032
- while ( true )
1053
+ try
1033
1054
{
1034
- ret = pattern != null
1035
- ? base . HScan ( hashId , ret . Cursor , pageSize , match : pattern )
1036
- : base . HScan ( hashId , ret . Cursor , pageSize ) ;
1037
-
1038
- foreach ( var entry in ret . AsKeyValues ( ) )
1055
+ var ret = CreateScanResult ( ) ;
1056
+ while ( true )
1039
1057
{
1040
- yield return entry ;
1041
- }
1058
+ ret = pattern != null
1059
+ ? base . HScan ( hashId , ret . Cursor , pageSize , match : pattern )
1060
+ : base . HScan ( hashId , ret . Cursor , pageSize ) ;
1061
+
1062
+ foreach ( var entry in ret . AsKeyValues ( ) )
1063
+ {
1064
+ yield return entry ;
1065
+ }
1042
1066
1043
- if ( ret . Cursor == 0 ) break ;
1067
+ if ( ret . Cursor == 0 ) break ;
1068
+ }
1069
+ }
1070
+ finally
1071
+ {
1072
+ EndScanResult ( ) ;
1044
1073
}
1045
1074
}
1046
1075
@@ -1065,9 +1094,9 @@ public RedisServerRole GetServerRole()
1065
1094
{
1066
1095
var text = base . Role ( ) ;
1067
1096
var roleName = text . Children [ 0 ] . Text ;
1068
- return ToServerRole ( roleName ) ;
1097
+ return ToServerRole ( roleName ) ;
1069
1098
}
1070
-
1099
+
1071
1100
string role ;
1072
1101
this . Info . TryGetValue ( "role" , out role ) ;
1073
1102
return ToServerRole ( role ) ;
@@ -1077,7 +1106,7 @@ private static RedisServerRole ToServerRole(string roleName)
1077
1106
{
1078
1107
if ( string . IsNullOrEmpty ( roleName ) )
1079
1108
return RedisServerRole . Unknown ;
1080
-
1109
+
1081
1110
switch ( roleName )
1082
1111
{
1083
1112
case "master" :
0 commit comments