/
Redis Cache Supportability API changes

Redis Cache Supportability API changes

Background

To scale content and hierarchy consumptions, metadata which is fetched as part of the response is stored in Redis cache. In order to support data reset in redis and also to compare neo4j and redis, small adhocs are added to existing APIs.

API changes

Force read from Neo4j

To force read data from neo4j for live node instead of redis(which is default), source=db is introduced.

Content Read API:

Request:
GET - content/v3/read/{content_id}?source=db

Response:
{
     "id": "ekstep.content.find",
     "ver": "3.0",
     "ts": "YYYY-MM-DDThh:mm:ssZ+/-nn.nn",
     "params": {
          "resmsgid": "",
          "msgid": "",
          "err": "",
          "status": "successful",
          "errmsg": ""
     },
     "responseCode": "OK",
     "result": {
          content: {
			//content metadata from neo4j
		}
     }
}


Get Hierarchy API:

Request:
GET - content/v3/hierarchy/{content_id}?source=db

Response:
{
     "id": "ekstep.learning.content.hierarchy",
     "ver": "3.0",
     "ts": "YYYY-MM-DDThh:mm:ssZ+/-nn.nn",
     "params": {
          "resmsgid": "",
          "msgid": "",
          "err": "",
          "status": "successful",
          "errmsg": ""
     },
     "responseCode": "OK",
     "result": {
          content: {
			//content metadata from neo4j
		}
     }
}


Reset Redis

To force reset data in redis, refresh_cache=true is introduced. This reads data from neo4j and reset the data in redis.

Content Read API:

Request:
GET - content/v3/read/{content_id}?refresh_cache=true

Response:
{
     "id": "ekstep.content.find",
     "ver": "3.0",
     "ts": "YYYY-MM-DDThh:mm:ssZ+/-nn.nn",
     "params": {
          "resmsgid": "",
          "msgid": "",
          "err": "",
          "status": "successful",
          "errmsg": ""
     },
     "responseCode": "OK",
     "result": {
          content: {
			//content metadata from neo4j
		}
     }
}


Get Hierarchy API:

Request:
GET - content/v3/hierarchy/{content_id}?refresh_cache=true

Response:
{
     "id": "ekstep.learning.content.hierarchy",
     "ver": "3.0",
     "ts": "YYYY-MM-DDThh:mm:ssZ+/-nn.nn",
     "params": {
          "resmsgid": "",
          "msgid": "",
          "err": "",
          "status": "successful",
          "errmsg": ""
     },
     "responseCode": "OK",
     "result": {
          content: {
			//content metadata from neo4j
		}
     }
}

Related content

Caching read API using Redis
Caching read API using Redis
More like this
Content - external store data restructuring
Content - external store data restructuring
More like this
Splitting the Redis Updater samza job
Splitting the Redis Updater samza job
More like this
Update Hierarchy - Partial Hierarchy Update APIs
Update Hierarchy - Partial Hierarchy Update APIs
More like this
Cache Implementation Design
Cache Implementation Design
More like this
Content Discard API specification
Content Discard API specification
More like this