Issue:
[FEATURE] Implement cache for MerchantKeyStore.

### Feature Description

Implement L1 and L2 cache (In memory and Redis) for MerchantKeyStore store for MerchantKeyStore Table

### Possible Implementation

There's already a static called `ACCOUNTS_CACHE`. You can use that and call `get_or_populate_in_memory` function to fetch from database if it's not either in redis or in memory cache. Refer https://github.com/juspay/hyperswitch/blob/d21fcc7bfc3bdf672b9cfbc5a234a3f3d03771c8/crates/router/src/db/merchant_account.rs#L99-L108.

### Have you spent some time to check if this feature request has been raised before?

- [X] I checked and didn't find similar issue

### Have you read the Contributing Guidelines?

- [X] I have read the [Contributing Guidelines](https://github.com/juspay/hyperswitch/blob/main/docs/CONTRIBUTING.md)

### Are you willing to submit a PR?

None

Resolution:
<think>
PR Context:
- Title: feat(router): add caching for MerchantKeyStore
- Merged: 2023-06-14T10:29:56Z
- Files changed: 1 files
- Commits: 4 commits

Implementation approach:
## Type of Change
<!-- Put an `x` in the boxes that apply -->

- [ ] Bugfix
- [x] New feature
- [ ] Enhancement
- [ ] Refactoring
- [ ] Dependency updates
- [ ] Documentation
- [ ] CI/CD

## Description
<!-- Describe your changes in detail -->
Implements the use of Moka cache and redis cache for merchant key store, uses same cfg features to apply cache depending on existence and more additions were made to cache.rs and service.rs match patterns while fetching and storing


### Ad
</think>

To implement this, you'll need to modify:


**Detailed Implementation:**


**Commit 1:** feat(router): add caching for MerchantKeyStore (#1409)
Files to modify:


**crates/router/src/db/merchant_key_store.rs**
  Modify existing code