Skip to content

Commit f7862c7

Browse files
committed
use a sorted set to store the list of revisions
1 parent e89d6f8 commit f7862c7

File tree

2 files changed

+19
-8
lines changed

2 files changed

+19
-8
lines changed

lib/redis.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ module.exports = CoreObject.extend({
7979

8080
_listRevisions: function(keyPrefix) {
8181
var client = this._client;
82-
return client.lrange(keyPrefix, 0, this._maxNumberOfRecentUploads - 1);
82+
return client.zrevrange(keyPrefix, 0, -1);
8383
},
8484

8585
_validateRevisionKey: function(revisionKey, revisions) {
@@ -111,11 +111,12 @@ module.exports = CoreObject.extend({
111111

112112
_updateRecentUploadsList: function(keyPrefix, revisionKey) {
113113
var client = this._client;
114-
return client.lpush(keyPrefix, revisionKey);
114+
var score = new Date().getTime();
115+
return client.zadd(keyPrefix, score, revisionKey);
115116
},
116117

117118
_trimRecentUploadsList: function(keyPrefix, maxEntries) {
118119
var client = this._client;
119-
return client.ltrim(keyPrefix, 0, maxEntries - 1);
120+
return client.zremrangebyrank(keyPrefix, 0, -(maxEntries + 1));
120121
}
121122
});

tests/unit/lib/redis-nodetest.js

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ describe('redis', function() {
3232
},
3333
set: function(key, value) {
3434
fileUploaded = true;
35+
},
36+
zadd: function(key, score, tag) {
37+
},
38+
zremrangebyrank: function() {
3539
}
3640
})));
3741

@@ -50,6 +54,10 @@ describe('redis', function() {
5054
}, new FakeRedis(FakeClient.extend({
5155
set: function(key, value) {
5256
fileUploaded = true;
57+
},
58+
zadd: function(key, score, tag) {
59+
},
60+
zremrangebyrank: function() {
5361
}
5462
})));
5563

@@ -67,9 +75,11 @@ describe('redis', function() {
6775
get: function(key) {
6876
return Promise.resolve(null);
6977
},
70-
lpush: function(key, tag) {
78+
zadd: function(key, score , tag) {
7179
recentUploads.push(key + tag);
7280
},
81+
zremrangebyrank: function() {
82+
}
7383
})));
7484

7585
var promise = redis.upload('key', 'value');
@@ -87,10 +97,10 @@ describe('redis', function() {
8797
get: function(key) {
8898
return Promise.resolve(null);
8999
},
90-
lpush: function(key, tag) {
100+
zadd: function(key, tag) {
91101
recentUploads.push(key + tag);
92102
},
93-
ltrim: function() {
103+
zremrangebyrank: function() {
94104
recentUploads.pop();
95105
}
96106
})));
@@ -143,7 +153,7 @@ describe('redis', function() {
143153
var recentRevisions = ['a', 'b', 'c'];
144154

145155
var redis = new Redis({}, new FakeRedis(FakeClient.extend({
146-
lrange: function() {
156+
zrevrange: function() {
147157
return recentRevisions;
148158
}
149159
})));
@@ -161,7 +171,7 @@ describe('redis', function() {
161171

162172

163173
var redis = new Redis({}, new FakeRedis(FakeClient.extend({
164-
lrange: function() {
174+
zrevrange: function() {
165175
return recentRevisions;
166176
},
167177
set: function(key, value) {

0 commit comments

Comments
 (0)