<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">Well, not really arrays in memory. Lists in memcache. It works well because 99% of requests will always be within the 100. That is why it exists as apposed to just having a 500,1000,1500, etc.
<br><br>But lets say a user has browsed up to the 800th entry. When getting the key from memcache, it only gets the one (this one is called "Articles:top:limit=1000"). Which contains all the ID's of the current articles in the order that they would be displayed. I skip the first 800 entries in that list, and display the next 15. The actual contents of the article itself is in another cache entry ("Article:aid=800" for example). Depending on how I was accessing this information, I would produce either xml or html and would generate a key called "xml:Article-list:800-814" or "html:Article-list:800-814").
<div>Sorry for digging up this old topic, but I'm still not quite understanding how you are storing the Memcache lists. You said you are storing the first 100 in one list, and the first 500 in another. If someone were to request the 20,000-20,100 entries, what exactly do you do? Do you create a third list that has records 1-20,100? Sorry if I'm a little slow.