ruby-redis 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE +9 -0
- data/README +90 -0
- data/bin/ruby-redis +12 -0
- data/bin/ruby-redis.compiled.rbc +243 -0
- data/lib/redis/bin.rb +74 -0
- data/lib/redis/bin.rbc +1325 -0
- data/lib/redis/buftok.rbc +2658 -0
- data/lib/redis/config.rb +46 -0
- data/lib/redis/config.rbc +1009 -0
- data/lib/redis/connection.rb +69 -0
- data/lib/redis/connection.rbc +1354 -0
- data/lib/redis/database.rb +109 -0
- data/lib/redis/database.rbc +2275 -0
- data/lib/redis/hashes.rb +72 -0
- data/lib/redis/hashes.rbc +1843 -0
- data/lib/redis/hiredis.rbc +658 -0
- data/lib/redis/keys.rb +165 -0
- data/lib/redis/keys.rbc +3386 -0
- data/lib/redis/lists.rb +227 -0
- data/lib/redis/lists.rbc +5241 -0
- data/lib/redis/logger.rb +81 -0
- data/lib/redis/logger.rbc +2106 -0
- data/lib/redis/protocol.rb +170 -0
- data/lib/redis/protocol.rbc +3735 -0
- data/lib/redis/pubsub.rb +153 -0
- data/lib/redis/pubsub.rbc +3447 -0
- data/lib/redis/reader.rb +164 -0
- data/lib/redis/reader.rbc +2769 -0
- data/lib/redis/send.rbc +1268 -0
- data/lib/redis/sender.rb +49 -0
- data/lib/redis/sender.rbc +1057 -0
- data/lib/redis/server.rb +62 -0
- data/lib/redis/server.rbc +1177 -0
- data/lib/redis/sets.rb +105 -0
- data/lib/redis/sets.rbc +2800 -0
- data/lib/redis/strict.rb +67 -0
- data/lib/redis/strict.rbc +1419 -0
- data/lib/redis/strings.rb +144 -0
- data/lib/redis/strings.rbc +3338 -0
- data/lib/redis/synchrony.rb +58 -0
- data/lib/redis/synchrony.rbc +1397 -0
- data/lib/redis/version.rb +7 -0
- data/lib/redis/version.rbc +180 -0
- data/lib/redis/zsets.rb +281 -0
- data/lib/redis/zsets.rbc +6596 -0
- data/lib/redis.rb +215 -0
- data/lib/redis.rbc +4391 -0
- metadata +117 -0
data/lib/redis/keys.rb
ADDED
@@ -0,0 +1,165 @@
|
|
1
|
+
require File.expand_path '../redis', File.dirname(__FILE__)
|
2
|
+
|
3
|
+
class Redis
|
4
|
+
module Keys
|
5
|
+
|
6
|
+
def redis_RANDOMKEY
|
7
|
+
return nil if @database.empty?
|
8
|
+
@database.random_key
|
9
|
+
end
|
10
|
+
|
11
|
+
def redis_KEYS pattern
|
12
|
+
@database.reduce([]) do |memo, key_val|
|
13
|
+
key = key_val[0]
|
14
|
+
memo.push key if File.fnmatch(pattern, key)
|
15
|
+
memo
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def redis_SORT key, *args
|
20
|
+
record = @database[key] || []
|
21
|
+
sort = 'ASC'
|
22
|
+
gets = []
|
23
|
+
alpha = false
|
24
|
+
by = by_hash = offset = count = store = nil
|
25
|
+
until args.empty?
|
26
|
+
arg = args.shift
|
27
|
+
case arg.upcase
|
28
|
+
when 'LIMIT'
|
29
|
+
offset = args.shift.to_i
|
30
|
+
count = args.shift.to_i
|
31
|
+
when 'ASC'
|
32
|
+
sort = 'ASC'
|
33
|
+
when 'DESC'
|
34
|
+
sort = 'DESC'
|
35
|
+
when 'ALPHA'
|
36
|
+
alpha = true
|
37
|
+
when 'STORE'
|
38
|
+
store = args.shift
|
39
|
+
when 'GET'
|
40
|
+
gets << args.shift
|
41
|
+
when 'BY'
|
42
|
+
by, by_hash = args.shift.split '->', 2
|
43
|
+
else
|
44
|
+
raise "#{arg} bad argument"
|
45
|
+
end
|
46
|
+
end
|
47
|
+
result = record.sort do |a, b|
|
48
|
+
if by
|
49
|
+
a = @database[by.sub /\*/, a]
|
50
|
+
a = a[by_hash] if by_hash
|
51
|
+
b = @database[by.sub /\*/, b]
|
52
|
+
b = b[by_hash] if by_hash
|
53
|
+
end
|
54
|
+
if alpha
|
55
|
+
a = a.to_s
|
56
|
+
b = b.to_s
|
57
|
+
else
|
58
|
+
a = a.to_f
|
59
|
+
b = b.to_f
|
60
|
+
end
|
61
|
+
if sort == 'DESC'
|
62
|
+
b <=> a
|
63
|
+
else
|
64
|
+
a <=> b
|
65
|
+
end
|
66
|
+
end
|
67
|
+
unless gets.empty?
|
68
|
+
original = result
|
69
|
+
result = []
|
70
|
+
original.each do |r|
|
71
|
+
gets.each do |g|
|
72
|
+
get, get_hash = g.split('->', 2)
|
73
|
+
r = @database[get.sub /\*/, r] unless get == '#'
|
74
|
+
r = r[get_hash] if get_hash
|
75
|
+
result << r
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
if count and offset
|
80
|
+
result = result[offset,count]
|
81
|
+
elsif count
|
82
|
+
result = result[0,count]
|
83
|
+
elsif offset
|
84
|
+
result = result[offset..-1]
|
85
|
+
end
|
86
|
+
if Array === result[0]
|
87
|
+
result = result.collect {|r| r.first}
|
88
|
+
end
|
89
|
+
@database[store] = result if store
|
90
|
+
result
|
91
|
+
end
|
92
|
+
|
93
|
+
def redis_DEL *keys
|
94
|
+
count = 0
|
95
|
+
keys.each do |key|
|
96
|
+
count += 1 if @database.has_key? key
|
97
|
+
@database.delete key
|
98
|
+
end
|
99
|
+
count
|
100
|
+
end
|
101
|
+
|
102
|
+
def redis_TYPE key
|
103
|
+
if String === @database[key]
|
104
|
+
'string'
|
105
|
+
elsif Numeric === @database[key]
|
106
|
+
'string'
|
107
|
+
elsif Array === @database[key]
|
108
|
+
'list'
|
109
|
+
elsif Set === @database[key]
|
110
|
+
'set'
|
111
|
+
elsif ZSet === @database[key]
|
112
|
+
'zset'
|
113
|
+
elsif Hash === @database[key]
|
114
|
+
'hash'
|
115
|
+
else
|
116
|
+
'unknown'
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
def redis_EXISTS key
|
121
|
+
@database.has_key? key
|
122
|
+
end
|
123
|
+
|
124
|
+
def redis_EXPIRE key, seconds
|
125
|
+
@database.expire key, redis_pos_i(seconds)
|
126
|
+
end
|
127
|
+
|
128
|
+
def redis_EXPIREAT key, timestamp
|
129
|
+
@database.expire_at key, redis_pos_i(timestamp)
|
130
|
+
end
|
131
|
+
|
132
|
+
def redis_PERSIST key
|
133
|
+
@database.persist key
|
134
|
+
end
|
135
|
+
|
136
|
+
def redis_TTL key
|
137
|
+
@database.ttl key
|
138
|
+
end
|
139
|
+
|
140
|
+
def redis_RENAME key, newkey
|
141
|
+
raise 'key and newkey are identical' if key == newkey
|
142
|
+
raise 'key not found' unless @database.has_key? key
|
143
|
+
@database[newkey] = @database[key]
|
144
|
+
@database.delete key
|
145
|
+
end
|
146
|
+
|
147
|
+
def redis_RENAMENX key, newkey
|
148
|
+
return false if @database.has_key? newkey
|
149
|
+
redis_RENAME key, newkey
|
150
|
+
true
|
151
|
+
end
|
152
|
+
|
153
|
+
def redis_MOVE key, db
|
154
|
+
raise unless @database.has_key? key
|
155
|
+
raise if Redis.databases[redis_i db].has_key? key
|
156
|
+
Redis.databases[redis_i db][key] = @database[key]
|
157
|
+
@database.delete key
|
158
|
+
true
|
159
|
+
rescue
|
160
|
+
false
|
161
|
+
end
|
162
|
+
|
163
|
+
|
164
|
+
end
|
165
|
+
end
|