mirror of
https://github.com/kataras/iris.git
synced 2025-02-02 15:30:36 +01:00
Former-commit-id: a2519c17a039b67129bd5683e9e9a1239c441c0a
This commit is contained in:
parent
2cd217f110
commit
0737c4364c
|
@ -235,13 +235,14 @@ func (r *RadixDriver) getKeys(prefix string) ([]string, error) {
|
||||||
scanner := radix.NewScanner(r.pool, radix.ScanOpts{
|
scanner := radix.NewScanner(r.pool, radix.ScanOpts{
|
||||||
Command: "SCAN",
|
Command: "SCAN",
|
||||||
Pattern: r.Config.Prefix + prefix + r.Config.Delim + "*", // get all of this session except its root sid.
|
Pattern: r.Config.Prefix + prefix + r.Config.Delim + "*", // get all of this session except its root sid.
|
||||||
// Count: 9999999999,
|
Count: 300000,
|
||||||
})
|
})
|
||||||
|
|
||||||
var key string
|
var key string
|
||||||
for scanner.Next(&key) {
|
for scanner.Next(&key) {
|
||||||
keys = append(keys, key)
|
keys = append(keys, key[len(r.Config.Prefix):])
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := scanner.Close(); err != nil {
|
if err := scanner.Close(); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -150,7 +150,7 @@ func (r *RedigoDriver) UpdateTTLMany(prefix string, newSecondsLifeTime int64) er
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
keys, err := r.getKeysConn(c, prefix)
|
keys, err := r.getKeysConn(c, 0, prefix)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -184,8 +184,8 @@ func (r *RedigoDriver) GetAll() (interface{}, error) {
|
||||||
return redisVal, nil
|
return redisVal, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *RedigoDriver) getKeysConn(c redis.Conn, prefix string) ([]string, error) {
|
func (r *RedigoDriver) getKeysConn(c redis.Conn, cursor interface{}, prefix string) ([]string, error) {
|
||||||
if err := c.Send("SCAN", 0, "MATCH", r.Config.Prefix+prefix+"*", "COUNT", 9999999999); err != nil {
|
if err := c.Send("SCAN", cursor, "MATCH", r.Config.Prefix+prefix+"*", "COUNT", 300000); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -198,19 +198,31 @@ func (r *RedigoDriver) getKeysConn(c redis.Conn, prefix string) ([]string, error
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// it returns []interface, with two entries, the first one is "0" and the second one is a slice of the keys as []interface{uint8....}.
|
// it returns []interface, with two entries, the first one is the cursor, if "0" then full iteration
|
||||||
|
// and the second one is a slice of the keys as []interface{uint8....}.
|
||||||
|
|
||||||
if keysInterface, ok := reply.([]interface{}); ok {
|
if replies, ok := reply.([]interface{}); ok {
|
||||||
if len(keysInterface) == 2 {
|
if len(replies) == 2 {
|
||||||
// take the second, it must contain the slice of keys.
|
// take the second, it must contain the slice of keys.
|
||||||
if keysSliceAsBytes, ok := keysInterface[1].([]interface{}); ok {
|
if keysSliceAsBytes, ok := replies[1].([]interface{}); ok {
|
||||||
keys := make([]string, len(keysSliceAsBytes), len(keysSliceAsBytes))
|
keys := make([]string, len(keysSliceAsBytes), len(keysSliceAsBytes))
|
||||||
|
|
||||||
for i, k := range keysSliceAsBytes {
|
for i, k := range keysSliceAsBytes {
|
||||||
keys[i] = fmt.Sprintf("%s", k)[len(r.Config.Prefix):]
|
keys[i] = fmt.Sprintf("%s", k)[len(r.Config.Prefix):]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if cur := fmt.Sprintf("%s", replies[0]); cur != "0" {
|
||||||
|
moreKeys, err := r.getKeysConn(c, cur, prefix)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
keys = append(keys, moreKeys...)
|
||||||
|
}
|
||||||
|
|
||||||
return keys, nil
|
return keys, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -226,7 +238,7 @@ func (r *RedigoDriver) GetKeys(prefix string) ([]string, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return r.getKeysConn(c, prefix)
|
return r.getKeysConn(c, 0, prefix)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetBytes returns value, err by its key
|
// GetBytes returns value, err by its key
|
||||||
|
|
Loading…
Reference in New Issue
Block a user