I got a solution for this.
Issue was not with Cache but with Price indexer. I found that price were updated in catalog_product_entity_decimal table but not in catalog_product_index_price.
I figured out this by below query
SELECT value, sku,price, final_price
FROM `catalog_product_index_price` p,`catalog_product_entity_decimal` d, catalog_product_entity m
WHERE d.entity_id = m.entity_id
and p.entity_id = m.entity_id
AND attribute_id =75 // ( Price attribute id )
AND p.final_price != d.value
This query gives result for all store ( if you have multiple stores then )
For a quick solution, i simply updated the Index table with new values.
( this is not recommended, I was confident enough before executing
below update queries. This is only for simple product types. If anyone, trying out this solution, please be very careful).
update mg_catalog_product_index_price p
set final_price = (select value from mg_catalog_product_entity_decimal d ,mg_catalog_product_entity m where p.entity_id = d.entity_id AND d.attribute_id =75 and d.entity_id = m.entity_id )
where p.entity_id = (select d.entity_id from mg_catalog_product_entity_decimal d where p.entity_id = d.entity_id AND d.attribute_id =75 )
Here i am just updating 'Final Price' column. We also need to update Price, min_price, max_price
Its always better to check out issue with Price indexer, rather than updating table itself. But you can always use above select query to identify such records.