type: string int value to configure the queue size
type: list stores at most 1000 project item ids with status=New
type: sorted-set stores current work in progress item id for each user, with timestampe as score
generation: peek the first element from project item list, retrieve metadata from database, then stores them as json
expire: expired after a period of time to avoid
type: string stores current online user count
type: hash stores project statistics
project-name: project1 total-items: 100 remaining-items: 50
type: sorted-set stores top 5 frequently used keywords
type: sorted-set stores top 5 frequently used categories
type: sorted-set stores top 5 frequently used subcategories
type: list fixed set of elements
type: list fixed set of elements
type: sorted-set dynamicly changes when new keyword was added
type: hash record team users effort statistics as well as whole team
sample: { "team:total:assigned": 10000, "team:type": taggie, "team:finished": 1000, "team:correct": 100, "team:incorrect": 100, "1:finished": 200, "1:correct": 5, "1:incorrect": 5, "2:finished": 500, "2:correct": 10, "2:incorrect": 10, ... }
periodically check the project queue size and ensure it's keeping the fix size. if less than that, query database for the project item ids and fill the queue.
handler for finished queue items
after finish tagging a item, there are several thing to do:
- update project item status
- create finished-by record: projectitemeffort
- add category link
- add subcategory link
- store keywords
- update taggie statistics
- update team statistics
- delete project item id in project wip queue
- delete project item id in user queue