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
@@ -0,0 +1,144 @@
|
|
1
|
+
require File.expand_path '../redis', File.dirname(__FILE__)
|
2
|
+
|
3
|
+
class Redis
|
4
|
+
|
5
|
+
# Note: Redis does not have a dedicated integer type.
|
6
|
+
# Integer operations will convert values to integers.
|
7
|
+
|
8
|
+
module Strings
|
9
|
+
|
10
|
+
def redis_GET key
|
11
|
+
value = @database[key]
|
12
|
+
redis_t NilClass, String, Numeric, value
|
13
|
+
value
|
14
|
+
end
|
15
|
+
|
16
|
+
def redis_APPEND key, value
|
17
|
+
new_value = redis_GET(key).to_s + value
|
18
|
+
@database[key] = new_value
|
19
|
+
new_value.size
|
20
|
+
end
|
21
|
+
|
22
|
+
def redis_SETRANGE key, offset, value
|
23
|
+
data = (redis_GET(key)||'').to_s
|
24
|
+
return data.size if value.empty?
|
25
|
+
offset = redis_pos_i offset, 'out of range'
|
26
|
+
raise 'maximum allowed size' if offset + value.size > 512*1024*1024
|
27
|
+
if data.size <= offset
|
28
|
+
data.concat 0.chr * (offset - data.size + value.size)
|
29
|
+
end
|
30
|
+
data[offset,value.size] = value
|
31
|
+
@database[key] = data
|
32
|
+
data.size
|
33
|
+
end
|
34
|
+
|
35
|
+
def redis_GETRANGE key, first, last
|
36
|
+
first = redis_i first
|
37
|
+
last = redis_i last
|
38
|
+
value = redis_GET(key) || ''
|
39
|
+
first = 0 if first < -value.size
|
40
|
+
value[first..last]
|
41
|
+
end
|
42
|
+
|
43
|
+
def redis_GETBIT key, offset
|
44
|
+
data = redis_GET key
|
45
|
+
return 0 unless data
|
46
|
+
data = data.to_s
|
47
|
+
offset = redis_pos_i offset
|
48
|
+
byte = offset / 8
|
49
|
+
bit = 0x80 >> offset % 8
|
50
|
+
return 0 if data.size <= byte
|
51
|
+
original_byte = data[byte].ord
|
52
|
+
original_bit = original_byte & bit
|
53
|
+
original_bit != 0
|
54
|
+
end
|
55
|
+
|
56
|
+
def redis_SETBIT key, offset, value
|
57
|
+
data = (redis_GET(key)||'').to_s
|
58
|
+
offset = redis_pos_i offset, 'out of range'
|
59
|
+
raise 'out of range' if offset >= 4*1024*1024*1024
|
60
|
+
byte = offset / 8
|
61
|
+
bit = 0x80 >> offset % 8
|
62
|
+
if data.size <= byte
|
63
|
+
data += 0.chr * (byte - data.size + 1)
|
64
|
+
end
|
65
|
+
original_byte = data[byte].ord
|
66
|
+
original_bit = original_byte & bit
|
67
|
+
if value == '0'
|
68
|
+
data[byte] = (original_byte & ~bit).chr
|
69
|
+
elsif value == '1'
|
70
|
+
data[byte] = (original_byte | bit).chr
|
71
|
+
else
|
72
|
+
raise 'out of range'
|
73
|
+
end
|
74
|
+
@database[key] = data
|
75
|
+
original_bit != 0
|
76
|
+
end
|
77
|
+
|
78
|
+
def redis_STRLEN key
|
79
|
+
value = redis_GET key
|
80
|
+
value ? value.size : 0
|
81
|
+
end
|
82
|
+
|
83
|
+
def redis_MGET *keys
|
84
|
+
keys.collect do |key|
|
85
|
+
value = @database[key]
|
86
|
+
(String === value) ? value : nil
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
def redis_GETSET key, value
|
91
|
+
old = redis_GET key
|
92
|
+
@database[key] = value
|
93
|
+
old
|
94
|
+
end
|
95
|
+
|
96
|
+
def redis_SET key, value
|
97
|
+
@database[key] = value
|
98
|
+
Response::OK
|
99
|
+
end
|
100
|
+
|
101
|
+
def redis_SETEX key, seconds, value
|
102
|
+
@database[key] = value
|
103
|
+
@database.expire key, redis_pos_i(seconds, 'invalid expire time in SETEX')
|
104
|
+
Response::OK
|
105
|
+
end
|
106
|
+
|
107
|
+
def redis_MSET *args
|
108
|
+
Hash[*args].each do |key, value|
|
109
|
+
@database[key] = value
|
110
|
+
end
|
111
|
+
Response::OK
|
112
|
+
end
|
113
|
+
|
114
|
+
def redis_MSETNX *args
|
115
|
+
hash = Hash[*args]
|
116
|
+
hash.each do |key, value|
|
117
|
+
return false if @database.has_key? key
|
118
|
+
end
|
119
|
+
hash.each do |key, value|
|
120
|
+
@database[key] = value
|
121
|
+
end
|
122
|
+
true
|
123
|
+
end
|
124
|
+
|
125
|
+
def redis_SETNX key, value
|
126
|
+
return false if @database.has_key? key
|
127
|
+
@database[key] = value
|
128
|
+
true
|
129
|
+
end
|
130
|
+
|
131
|
+
def redis_INCR key
|
132
|
+
@database[key] = redis_i(@database[key] || 0) + 1
|
133
|
+
end
|
134
|
+
|
135
|
+
def redis_INCRBY key, value
|
136
|
+
@database[key] = redis_i(@database[key] || 0) + redis_i(value)
|
137
|
+
end
|
138
|
+
|
139
|
+
def redis_DECRBY key, value
|
140
|
+
@database[key] = redis_i(@database[key] || 0) - redis_i(value)
|
141
|
+
end
|
142
|
+
|
143
|
+
end
|
144
|
+
end
|